IB/core: correctly handle rdma_rw_init_mrs() failure
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>