summary refs log tree commit diff
path: root/drivers/infiniband
diff options
context:
space:
mode:
authorIsrael Rukshin <israelr@mellanox.com>2017-05-11 18:52:36 +0300
committerDoug Ledford <dledford@redhat.com>2017-06-01 17:20:10 -0400
commit95c2ef50c726a51d580c35ae8dccd383abaa8701 (patch)
tree449a5e34e8f365503eaa3104e887252e1125d436 /drivers/infiniband
parent0a1a972630c77edb39adf310699e404b8bf9176e (diff)
downloadlinux-95c2ef50c726a51d580c35ae8dccd383abaa8701.tar.gz
RDMA/srp: Fix NULL deref at srp_destroy_qp()
If srp_init_qp() fails at srp_create_ch_ib() then ch->send_cq
may be NULL.
Calling directly to ib_destroy_qp() is sufficient because
no work requests were posted on the created qp.

Fixes: 9294000d6d89 ("IB/srp: Drain the send queue before destroying a QP")
Cc: <stable@vger.kernel.org>
Signed-off-by: Israel Rukshin <israelr@mellanox.com>
Reviewed-by: Max Gurtovoy <maxg@mellanox.com>
Reviewed-by: Bart van Assche <bart.vanassche@sandisk.com>--
Signed-off-by: Doug Ledford <dledford@redhat.com>
Diffstat (limited to 'drivers/infiniband')
-rw-r--r--drivers/infiniband/ulp/srp/ib_srp.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/drivers/infiniband/ulp/srp/ib_srp.c b/drivers/infiniband/ulp/srp/ib_srp.c
index def723a5df29..4306285fb155 100644
--- a/drivers/infiniband/ulp/srp/ib_srp.c
+++ b/drivers/infiniband/ulp/srp/ib_srp.c
@@ -575,7 +575,7 @@ static int srp_create_ch_ib(struct srp_rdma_ch *ch)
 	return 0;
 
 err_qp:
-	srp_destroy_qp(ch, qp);
+	ib_destroy_qp(qp);
 
 err_send_cq:
 	ib_free_cq(send_cq);