aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/infiniband/sw/rxe/rxe_resp.c
diff options
context:
space:
mode:
authorBob Pearson <rpearsonhpe@gmail.com>2022-04-20 20:40:36 -0500
committerJason Gunthorpe <jgg@nvidia.com>2022-05-09 09:03:45 -0300
commit4e05a4b329e9416e5aded022feacde4385148f21 (patch)
tree0cc0c1e84b4648ee19949703fadb25f2f88c358c /drivers/infiniband/sw/rxe/rxe_resp.c
parentRDMA/rxe: Add rxe_srq_cleanup() (diff)
downloadlinux-dev-4e05a4b329e9416e5aded022feacde4385148f21.tar.xz
linux-dev-4e05a4b329e9416e5aded022feacde4385148f21.zip
RDMA/rxe: Check rxe_get() return value
In the tasklets (completer, responder, and requester) check the return value from rxe_get() to detect failures to get a reference. This only occurs if the qp has had its reference count drop to zero which indicates that it no longer should be used. The ref is never 0 today because the tasklets are flushed before the ref is dropped. The next patch changes this so that the ref is dropped then the tasklets are flushed. Link: https://lore.kernel.org/r/20220421014042.26985-4-rpearsonhpe@gmail.com Signed-off-by: Bob Pearson <rpearsonhpe@gmail.com> Signed-off-by: Jason Gunthorpe <jgg@nvidia.com>
Diffstat (limited to '')
-rw-r--r--drivers/infiniband/sw/rxe/rxe_resp.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/drivers/infiniband/sw/rxe/rxe_resp.c b/drivers/infiniband/sw/rxe/rxe_resp.c
index e2653a8721fe..d995ddbe23a0 100644
--- a/drivers/infiniband/sw/rxe/rxe_resp.c
+++ b/drivers/infiniband/sw/rxe/rxe_resp.c
@@ -1247,7 +1247,8 @@ int rxe_responder(void *arg)
struct rxe_pkt_info *pkt = NULL;
int ret = 0;
- rxe_get(qp);
+ if (!rxe_get(qp))
+ return -EAGAIN;
qp->resp.aeth_syndrome = AETH_ACK_UNLIMITED;