diff options
author | Bob Pearson <rpearsonhpe@gmail.com> | 2023-03-27 16:56:44 -0500 |
---|---|---|
committer | Leon Romanovsky <leon@kernel.org> | 2023-03-29 14:25:11 +0300 |
commit | 78b26a335310a097d6b22581b706050db42f196c (patch) | |
tree | 9f128a87e8cf865406b9d63613c6f6f4b93d838a /drivers/infiniband/sw/rxe/rxe_verbs.h | |
parent | cba968e33e5df086b6e681179d199f959bc71f33 (diff) |
RDMA/rxe: Remove tasklet call from rxe_cq.c
Remove the tasklet call in rxe_cq.c and also the is_dying in the
cq struct. There is no reason for the rxe driver to defer the call
to the cq completion handler by scheduling a tasklet. rxe_cq_post()
is not called in a hard irq context.
The rxe driver currently is incorrect because the tasklet call is
made without protecting the cq pointer with a reference from having
the underlying memory freed before the deferred routine is called.
Executing the comp_handler inline fixes this problem.
Fixes: 8700e3e7c485 ("Soft RoCE driver")
Signed-off-by: Bob Pearson <rpearsonhpe@gmail.com>
Link: https://lore.kernel.org/r/20230327215643.10410-1-rpearsonhpe@gmail.com
Acked-by: Zhu Yanjun <zyjzyj2000@gmail.com>
Signed-off-by: Leon Romanovsky <leon@kernel.org>
Diffstat (limited to 'drivers/infiniband/sw/rxe/rxe_verbs.h')
-rw-r--r-- | drivers/infiniband/sw/rxe/rxe_verbs.h | 2 |
1 files changed, 0 insertions, 2 deletions
diff --git a/drivers/infiniband/sw/rxe/rxe_verbs.h b/drivers/infiniband/sw/rxe/rxe_verbs.h index c269ae2a3224..d812093a3916 100644 --- a/drivers/infiniband/sw/rxe/rxe_verbs.h +++ b/drivers/infiniband/sw/rxe/rxe_verbs.h @@ -63,9 +63,7 @@ struct rxe_cq { struct rxe_queue *queue; spinlock_t cq_lock; u8 notify; - bool is_dying; bool is_user; - struct tasklet_struct comp_task; atomic_t num_wq; }; |