mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-05-09 04:21:03 -04:00
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: Hannes Reinecke <hare@suse.de> Signed-off-by: Keith Busch <kbusch@kernel.org>
This commit is contained in:
committed by
Keith Busch
parent
d680063482
commit
bbacf79201
@@ -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)
|
||||
{
|
||||
spin_lock(&queue->state_lock);
|
||||
spin_lock_bh(&queue->state_lock);
|
||||
if (queue->state == NVMET_TCP_Q_TLS_HANDSHAKE) {
|
||||
/* Socket closed during handshake */
|
||||
tls_handshake_cancel(queue->sock->sk);
|
||||
@@ -1388,7 +1388,7 @@ static void nvmet_tcp_schedule_release_queue(struct nvmet_tcp_queue *queue)
|
||||
queue->state = NVMET_TCP_Q_DISCONNECTING;
|
||||
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)
|
||||
|
||||
Reference in New Issue
Block a user