UPSTREAM: io_uring: use call_rcu_hurry if signaling an eventfd
io_uring uses call_rcu in the case it needs to signal an eventfd as a result of an eventfd signal, since recursing eventfd signals are not allowed. This should be calling the new call_rcu_hurry API to not delay the signal. Signed-off-by: Dylan Yudaken <dylany@meta.com> Cc: Joel Fernandes (Google) <joel@joelfernandes.org> Cc: Paul E. McKenney <paulmck@kernel.org> Acked-by: Paul E. McKenney <paulmck@kernel.org> Reviewed-by: Joel Fernandes (Google) <joel@joelfernandes.org> Link: https://lore.kernel.org/r/20221215184138.795576-1-dylany@meta.com Signed-off-by: Jens Axboe <axboe@kernel.dk> (cherry picked from commit 44a84da45272b3f4beb90025a64cfbde18f1aef0) Bug: 258241771 Signed-off-by: Joel Fernandes <joelaf@google.com> Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/kernel/+/4909038 Reviewed-by: Vineeth Pillai <vineethrp@google.com> Reviewed-by: Ross Zwisler <zwisler@google.com> Reviewed-by: Sean Paul <sean@poorly.run> Signed-off-by: Qais Yousef <qyousef@google.com> Change-Id: Iec189c9ce0a95ccacda81f58bf7d49a575a6ab3f
This commit is contained in:
parent
84c8157d06
commit
ced65a053b
@ -536,7 +536,7 @@ static void io_eventfd_signal(struct io_ring_ctx *ctx)
|
||||
} else {
|
||||
atomic_inc(&ev_fd->refs);
|
||||
if (!atomic_fetch_or(BIT(IO_EVENTFD_OP_SIGNAL_BIT), &ev_fd->ops))
|
||||
call_rcu(&ev_fd->rcu, io_eventfd_ops);
|
||||
call_rcu_hurry(&ev_fd->rcu, io_eventfd_ops);
|
||||
else
|
||||
atomic_dec(&ev_fd->refs);
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user