Commit bbacf792 authored by Hannes Reinecke's avatar Hannes Reinecke Committed by Keith Busch

nvmet-tcp: use 'spin_lock_bh' for state_lock()

nvmet_tcp_schedule_release_queue() is called from socket state
change callbacks, which may be called from an softirq context.
So use 'spin_lock_bh' to avoid a spin lock warning.
Signed-off-by: default avatarHannes Reinecke <hare@suse.de>
Signed-off-by: default avatarKeith Busch <kbusch@kernel.org>
parent d6800634
...@@ -1379,7 +1379,7 @@ static void nvmet_tcp_release_queue(struct kref *kref) ...@@ -1379,7 +1379,7 @@ static void nvmet_tcp_release_queue(struct kref *kref)
static void nvmet_tcp_schedule_release_queue(struct nvmet_tcp_queue *queue) static void nvmet_tcp_schedule_release_queue(struct nvmet_tcp_queue *queue)
{ {
spin_lock(&queue->state_lock); spin_lock_bh(&queue->state_lock);
if (queue->state == NVMET_TCP_Q_TLS_HANDSHAKE) { if (queue->state == NVMET_TCP_Q_TLS_HANDSHAKE) {
/* Socket closed during handshake */ /* Socket closed during handshake */
tls_handshake_cancel(queue->sock->sk); tls_handshake_cancel(queue->sock->sk);
...@@ -1388,7 +1388,7 @@ static void nvmet_tcp_schedule_release_queue(struct nvmet_tcp_queue *queue) ...@@ -1388,7 +1388,7 @@ static void nvmet_tcp_schedule_release_queue(struct nvmet_tcp_queue *queue)
queue->state = NVMET_TCP_Q_DISCONNECTING; queue->state = NVMET_TCP_Q_DISCONNECTING;
kref_put(&queue->kref, nvmet_tcp_release_queue); kref_put(&queue->kref, nvmet_tcp_release_queue);
} }
spin_unlock(&queue->state_lock); spin_unlock_bh(&queue->state_lock);
} }
static inline void nvmet_tcp_arm_queue_deadline(struct nvmet_tcp_queue *queue) static inline void nvmet_tcp_arm_queue_deadline(struct nvmet_tcp_queue *queue)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment