Home Home > GIT Browse > openSUSE-15.0
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTakashi Iwai <tiwai@suse.de>2017-04-03 14:25:36 +0200
committerTakashi Iwai <tiwai@suse.de>2017-04-03 14:25:36 +0200
commit824b24530ab461b2fd0a7b2d768f2d35d91fa8f9 (patch)
treee92cc6260566fa2aedfbdf86ac3afe8a6f12015c
parent9d324493680099aa44658763f5b8b52f7c2ccc06 (diff)
parent9a03ba1486d557c754340f622695941fc7d5b5d7 (diff)
Merge branch 'users/hare/SLE12-SP3/for-next' into SLE12-SP3rpm-4.4.59-1
Pull IB fix from Hannes Reinecke (bsc#1024474).
-rw-r--r--patches.drivers/IB-core-correctly-handle-rdma_rw_init_mrs-failure.patch76
-rw-r--r--series.conf1
2 files changed, 77 insertions, 0 deletions
diff --git a/patches.drivers/IB-core-correctly-handle-rdma_rw_init_mrs-failure.patch b/patches.drivers/IB-core-correctly-handle-rdma_rw_init_mrs-failure.patch
new file mode 100644
index 0000000000..53fbbc83d5
--- /dev/null
+++ b/patches.drivers/IB-core-correctly-handle-rdma_rw_init_mrs-failure.patch
@@ -0,0 +1,76 @@
+From: Steve Wise <swise@opengridcomputing.com>
+Date: Thu, 29 Sep 2016 07:31:33 -0700
+Subject: IB/core: correctly handle rdma_rw_init_mrs() failure
+References: bsc#1024474
+Git-commit: b6bc1c731f0b985e91f618561fc82c6e252dfaf4
+Patch-Mainline: v4.9-rc1
+
+Function ib_create_qp() was failing to return an error when
+rdma_rw_init_mrs() fails, causing a crash further down in ib_create_qp()
+when trying to dereferece the qp pointer which was actually a negative
+errno.
+
+The crash:
+
+crash> log|grep BUG
+[ 136.458121] BUG: unable to handle kernel NULL pointer dereference at 0000000000000098
+crash> bt
+PID: 3736 TASK: ffff8808543215c0 CPU: 2 COMMAND: "kworker/u64:2"
+ #0 [ffff88084d323340] machine_kexec at ffffffff8105fbb0
+ #1 [ffff88084d3233b0] __crash_kexec at ffffffff81116758
+ #2 [ffff88084d323480] crash_kexec at ffffffff8111682d
+ #3 [ffff88084d3234b0] oops_end at ffffffff81032bd6
+ #4 [ffff88084d3234e0] no_context at ffffffff8106e431
+ #5 [ffff88084d323530] __bad_area_nosemaphore at ffffffff8106e610
+ #6 [ffff88084d323590] bad_area_nosemaphore at ffffffff8106e6f4
+ #7 [ffff88084d3235a0] __do_page_fault at ffffffff8106ebdc
+ #8 [ffff88084d323620] do_page_fault at ffffffff8106f057
+ #9 [ffff88084d323660] page_fault at ffffffff816e3148
+ [exception RIP: ib_create_qp+427]
+ RIP: ffffffffa02554fb RSP: ffff88084d323718 RFLAGS: 00010246
+ RAX: 0000000000000004 RBX: fffffffffffffff4 RCX: 000000018020001f
+ RDX: ffff880830997fc0 RSI: 0000000000000001 RDI: ffff88085f407200
+ RBP: ffff88084d323778 R8: 0000000000000001 R9: ffffea0020bae210
+ R10: ffffea0020bae218 R11: 0000000000000001 R12: ffff88084d3237c8
+ R13: 00000000fffffff4 R14: ffff880859fa5000 R15: ffff88082eb89800
+ ORIG_RAX: ffffffffffffffff CS: 0010 SS: 0018
+#10 [ffff88084d323780] rdma_create_qp at ffffffffa0782681 [rdma_cm]
+#11 [ffff88084d3237b0] nvmet_rdma_create_queue_ib at ffffffffa07c43f3 [nvmet_rdma]
+#12 [ffff88084d323860] nvmet_rdma_alloc_queue at ffffffffa07c5ba9 [nvmet_rdma]
+#13 [ffff88084d323900] nvmet_rdma_queue_connect at ffffffffa07c5c96 [nvmet_rdma]
+#14 [ffff88084d323980] nvmet_rdma_cm_handler at ffffffffa07c6450 [nvmet_rdma]
+#15 [ffff88084d3239b0] iw_conn_req_handler at ffffffffa0787480 [rdma_cm]
+#16 [ffff88084d323a60] cm_conn_req_handler at ffffffffa0775f06 [iw_cm]
+#17 [ffff88084d323ab0] process_event at ffffffffa0776019 [iw_cm]
+#18 [ffff88084d323af0] cm_work_handler at ffffffffa0776170 [iw_cm]
+#19 [ffff88084d323cb0] process_one_work at ffffffff810a1483
+#20 [ffff88084d323d90] worker_thread at ffffffff810a211d
+#21 [ffff88084d323ec0] kthread at ffffffff810a6c5c
+#22 [ffff88084d323f50] ret_from_fork at ffffffff816e1ebf
+
+Fixes: 632bc3f65081 ("IB/core, RDMA RW API: Do not exceed QP SGE send limit")
+Signed-off-by: Steve Wise <swise@opengridcomputing.com>
+Cc: stable@vger.kernel.org
+Reviewed-by: Bart Van Assche <bart.vanassche@sandisk.com>
+Signed-off-by: Doug Ledford <dledford@redhat.com>
+Signed-off-by: Hannes Reinecke <hare@suse.de>
+---
+ drivers/infiniband/core/verbs.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/drivers/infiniband/core/verbs.c b/drivers/infiniband/core/verbs.c
+index f7deaef..e846c81 100644
+--- a/drivers/infiniband/core/verbs.c
++++ b/drivers/infiniband/core/verbs.c
+@@ -829,7 +829,7 @@ struct ib_qp *ib_create_qp(struct ib_pd *pd,
+ if (ret) {
+ pr_err("failed to init MR pool ret= %d\n", ret);
+ ib_destroy_qp(qp);
+- qp = ERR_PTR(ret);
++ return ERR_PTR(ret);
+ }
+ }
+
+--
+1.8.5.6
+
diff --git a/series.conf b/series.conf
index 83856d69ea..2b7827694f 100644
--- a/series.conf
+++ b/series.conf
@@ -6996,6 +6996,7 @@
patches.drivers/IB-SRP-Avoid-using-IB_MR_TYPE_SG_GAPS.patch
patches.drivers/IB-srp-fix-mr-allocation-when-the-device-supports-sg.patch
patches.drivers/IB-srp-Fix-srp_map_sg_dma.patch
+ patches.drivers/IB-core-correctly-handle-rdma_rw_init_mrs-failure.patch
# fate#322061 Hisilicon/Huawei Hip06d05 Infiniband
patches.drivers/arm64-hip-0001-IB-hns-Add-driver-files-for-hns-RoCE-driver.patch