stable.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH] RDMA/rxe: Fix a race condition related to the QP error state
@ 2018-01-09 19:23 Bart Van Assche
  2018-01-10 21:40 ` Doug Ledford
  2018-01-11 11:27 ` Moni Shoua
  0 siblings, 2 replies; 12+ messages in thread
From: Bart Van Assche @ 2018-01-09 19:23 UTC (permalink / raw)
  To: Jason Gunthorpe
  Cc: Doug Ledford, linux-rdma, Bart Van Assche, Moni Shoua, stable

The following sequence:
* Change queue pair state into IB_QPS_ERR.
* Post a work request on the queue pair.
Triggers the following race condition in the rdma_rxe driver:
* rxe_qp_error() triggers an asynchronous call of rxe_completer(), the function
  that examines the QP send queue.
* rxe_post_send() posts a work request on the QP send queue.
Avoid that this race causes a work request to be ignored by scheduling
an rxe_completer() call from rxe_post_send() for queues that are in the
error state.

Signed-off-by: Bart Van Assche <bart.vanassche@wdc.com>
Cc: Moni Shoua <monis@mellanox.com>
Cc: <stable@vger.kernel.org> # v4.8
---
 drivers/infiniband/sw/rxe/rxe_verbs.c | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/drivers/infiniband/sw/rxe/rxe_verbs.c b/drivers/infiniband/sw/rxe/rxe_verbs.c
index a6fbed48db8a..8f631d64c192 100644
--- a/drivers/infiniband/sw/rxe/rxe_verbs.c
+++ b/drivers/infiniband/sw/rxe/rxe_verbs.c
@@ -814,6 +814,8 @@ static int rxe_post_send_kernel(struct rxe_qp *qp, struct ib_send_wr *wr,
 			(queue_count(qp->sq.queue) > 1);
 
 	rxe_run_task(&qp->req.task, must_sched);
+	if (unlikely(qp->req.state == QP_STATE_ERROR))
+		rxe_run_task(&qp->comp.task, 1);
 
 	return err;
 }
-- 
2.15.1

^ permalink raw reply related	[flat|nested] 12+ messages in thread

end of thread, other threads:[~2018-01-12  6:38 UTC | newest]

Thread overview: 12+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2018-01-09 19:23 [PATCH] RDMA/rxe: Fix a race condition related to the QP error state Bart Van Assche
2018-01-10 21:40 ` Doug Ledford
2018-01-10 22:01   ` Doug Ledford
2018-01-11  6:22     ` Leon Romanovsky
2018-01-11 16:02       ` Bart Van Assche
2018-01-11 19:00         ` Leon Romanovsky
2018-01-11 19:07           ` Bart Van Assche
2018-01-12  6:23             ` Leon Romanovsky
2018-01-12  6:32               ` Bart Van Assche
2018-01-12  6:38                 ` Leon Romanovsky
2018-01-11 11:27 ` Moni Shoua
2018-01-11 16:16   ` Bart Van Assche

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).