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.
Link: https://lore.kernel.org/r/20220630190425.2251-10-rpearsonhpe@gmail.com
Signed-off-by: Bob Pearson <rpearsonhpe@gmail.com>
Reviewed-by: Li Zhijian <lizhijian@fujitsu.com>
Signed-off-by: Jason Gunthorpe <jgg@nvidia.com>
                                                       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;
        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: