From: Sasha Levin Date: Mon, 22 Mar 2021 03:05:03 +0000 (-0400) Subject: Fixes for 4.19 X-Git-Tag: v4.4.263~49 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=ccd36e87030ec0d30601984fcd63ae1e4f7c0bab;p=thirdparty%2Fkernel%2Fstable-queue.git Fixes for 4.19 Signed-off-by: Sasha Levin --- diff --git a/queue-4.19/nvme-rdma-fix-possible-hang-when-failing-to-set-io-q.patch b/queue-4.19/nvme-rdma-fix-possible-hang-when-failing-to-set-io-q.patch new file mode 100644 index 00000000000..8fcb9529f4f --- /dev/null +++ b/queue-4.19/nvme-rdma-fix-possible-hang-when-failing-to-set-io-q.patch @@ -0,0 +1,46 @@ +From 3778c4de96af4d1405cf2cb37b977be768dda4ed Mon Sep 17 00:00:00 2001 +From: Sasha Levin +Date: Mon, 15 Mar 2021 14:04:27 -0700 +Subject: nvme-rdma: fix possible hang when failing to set io queues + +From: Sagi Grimberg + +[ Upstream commit c4c6df5fc84659690d4391d1fba155cd94185295 ] + +We only setup io queues for nvme controllers, and it makes absolutely no +sense to allow a controller (re)connect without any I/O queues. If we +happen to fail setting the queue count for any reason, we should not allow +this to be a successful reconnect as I/O has no chance in going through. +Instead just fail and schedule another reconnect. + +Reported-by: Chao Leng +Fixes: 711023071960 ("nvme-rdma: add a NVMe over Fabrics RDMA host driver") +Signed-off-by: Sagi Grimberg +Reviewed-by: Chao Leng +Signed-off-by: Christoph Hellwig +Signed-off-by: Sasha Levin +--- + drivers/nvme/host/rdma.c | 7 +++++-- + 1 file changed, 5 insertions(+), 2 deletions(-) + +diff --git a/drivers/nvme/host/rdma.c b/drivers/nvme/host/rdma.c +index 134e14e778f8..8798274dc3ba 100644 +--- a/drivers/nvme/host/rdma.c ++++ b/drivers/nvme/host/rdma.c +@@ -644,8 +644,11 @@ static int nvme_rdma_alloc_io_queues(struct nvme_rdma_ctrl *ctrl) + return ret; + + ctrl->ctrl.queue_count = nr_io_queues + 1; +- if (ctrl->ctrl.queue_count < 2) +- return 0; ++ if (ctrl->ctrl.queue_count < 2) { ++ dev_err(ctrl->ctrl.device, ++ "unable to set any I/O queues\n"); ++ return -ENOMEM; ++ } + + dev_info(ctrl->ctrl.device, + "creating %d I/O queues.\n", nr_io_queues); +-- +2.30.1 + diff --git a/queue-4.19/series b/queue-4.19/series index 270d7b9cf4a..2d867bcaa19 100644 --- a/queue-4.19/series +++ b/queue-4.19/series @@ -17,3 +17,4 @@ svcrdma-disable-timeouts-on-rdma-backchannel.patch sunrpc-fix-refcount-leak-for-rpc-auth-modules.patch net-qrtr-fix-__netdev_alloc_skb-call.patch scsi-lpfc-fix-some-error-codes-in-debugfs.patch +nvme-rdma-fix-possible-hang-when-failing-to-set-io-q.patch