On 01/07/2022 03:04, Bob Pearson wrote: > In rxe_req.c replace calls to __rxe_do_task() by calls to > rxe_run_task(.., 0). Using __rxe_do_task is an error because > the completer tasklet is not designed to be re-entrant and > __rxe_do_task() should only be called when it is clear that > no one else could be calling the completer tasklet as is the > case in rxe_qp.c where this call is used in safe environments. > > Signed-off-by: Bob Pearson <rpearsonhpe@xxxxxxxxx> LGTM, Reviewed-by: Li Zhijian <lizhijian@xxxxxxxxxxx> > --- > drivers/infiniband/sw/rxe/rxe_req.c | 4 ++-- > 1 file changed, 2 insertions(+), 2 deletions(-) > > diff --git a/drivers/infiniband/sw/rxe/rxe_req.c b/drivers/infiniband/sw/rxe/rxe_req.c > index 008ae51c7560..58b9f170b18b 100644 > --- a/drivers/infiniband/sw/rxe/rxe_req.c > +++ b/drivers/infiniband/sw/rxe/rxe_req.c > @@ -723,7 +723,7 @@ int rxe_requester(void *arg) > qp->req.wqe_index); > wqe->state = wqe_state_done; > wqe->status = IB_WC_SUCCESS; > - __rxe_do_task(&qp->comp.task); > + rxe_run_task(&qp->comp.task, 0); > goto done; > } > payload = mtu; > @@ -804,7 +804,7 @@ int rxe_requester(void *arg) > goto out; > err: > wqe->state = wqe_state_error; > - __rxe_do_task(&qp->comp.task); > + rxe_run_task(&qp->comp.task, 0); > exit: > ret = -EAGAIN; > out: