projects
/
linux
/
.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
| inline |
side by side
(parent:
a379ad5
)
RDMA/qedr: Fix return code if accept is called on a destroyed qp
author
Michal Kalderon
<michal.kalderon@marvell.com>
Wed, 2 Sep 2020 16:57:37 +0000
(19:57 +0300)
committer
Jason Gunthorpe
<jgg@nvidia.com>
Fri, 11 Sep 2020 13:24:54 +0000
(10:24 -0300)
In iWARP, accept could be called after a QP is already destroyed. In this
case an error should be returned and not success.
Fixes:
82af6d19d8d9
("RDMA/qedr: Fix synchronization methods and memory leaks in qedr")
Link:
https://lore.kernel.org/r/20200902165741.8355-5-michal.kalderon@marvell.com
Signed-off-by: Michal Kalderon <michal.kalderon@marvell.com>
Signed-off-by: Jason Gunthorpe <jgg@nvidia.com>
drivers/infiniband/hw/qedr/qedr_iw_cm.c
patch
|
blob
|
history
diff --git
a/drivers/infiniband/hw/qedr/qedr_iw_cm.c
b/drivers/infiniband/hw/qedr/qedr_iw_cm.c
index 97fc7dd353b04d8ad70f7a383f18714b8fa3954c..c7169d2c69e5b0438816a491458be80a7593f5d8 100644
(file)
--- a/
drivers/infiniband/hw/qedr/qedr_iw_cm.c
+++ b/
drivers/infiniband/hw/qedr/qedr_iw_cm.c
@@
-736,7
+736,7
@@
int qedr_iw_accept(struct iw_cm_id *cm_id, struct iw_cm_conn_param *conn_param)
struct qedr_dev *dev = ep->dev;
struct qedr_qp *qp;
struct qed_iwarp_accept_in params;
- int rc
= 0
;
+ int rc;
DP_DEBUG(dev, QEDR_MSG_IWARP, "Accept on qpid=%d\n", conn_param->qpn);
@@
-759,8
+759,10
@@
int qedr_iw_accept(struct iw_cm_id *cm_id, struct iw_cm_conn_param *conn_param)
params.ord = conn_param->ord;
if (test_and_set_bit(QEDR_IWARP_CM_WAIT_FOR_CONNECT,
- &qp->iwarp_cm_flags))
+ &qp->iwarp_cm_flags)) {
+ rc = -EINVAL;
goto err; /* QP already destroyed */
+ }
rc = dev->ops->iwarp_accept(dev->rdma_ctx, ¶ms);
if (rc) {