| From 2fd5e353053b45e44d569ca2f69242dd162768b1 Mon Sep 17 00:00:00 2001 |
| From: Sasha Levin <sashal@kernel.org> |
| Date: Sun, 21 Mar 2021 00:08:48 -0700 |
| Subject: nvme-tcp: block BH in sk state_change sk callback |
| |
| From: Sagi Grimberg <sagi@grimberg.me> |
| |
| [ Upstream commit 8b73b45d54a14588f86792869bfb23098ea254cb ] |
| |
| The TCP stack can run from process context for a long time |
| so we should disable BH here. |
| |
| Fixes: 3f2304f8c6d6 ("nvme-tcp: add NVMe over TCP host driver") |
| Signed-off-by: Sagi Grimberg <sagi@grimberg.me> |
| Signed-off-by: Christoph Hellwig <hch@lst.de> |
| Signed-off-by: Sasha Levin <sashal@kernel.org> |
| --- |
| drivers/nvme/host/tcp.c | 4 ++-- |
| 1 file changed, 2 insertions(+), 2 deletions(-) |
| |
| diff --git a/drivers/nvme/host/tcp.c b/drivers/nvme/host/tcp.c |
| index c6958e5bc91d..709a573183a2 100644 |
| --- a/drivers/nvme/host/tcp.c |
| +++ b/drivers/nvme/host/tcp.c |
| @@ -874,7 +874,7 @@ static void nvme_tcp_state_change(struct sock *sk) |
| { |
| struct nvme_tcp_queue *queue; |
| |
| - read_lock(&sk->sk_callback_lock); |
| + read_lock_bh(&sk->sk_callback_lock); |
| queue = sk->sk_user_data; |
| if (!queue) |
| goto done; |
| @@ -895,7 +895,7 @@ static void nvme_tcp_state_change(struct sock *sk) |
| |
| queue->state_change(sk); |
| done: |
| - read_unlock(&sk->sk_callback_lock); |
| + read_unlock_bh(&sk->sk_callback_lock); |
| } |
| |
| static inline bool nvme_tcp_queue_more(struct nvme_tcp_queue *queue) |
| -- |
| 2.30.2 |
| |