diff options
author | Jens Axboe <axboe@kernel.dk> | 2020-02-03 18:33:42 +0100 |
---|---|---|
committer | Jens Axboe <axboe@kernel.dk> | 2020-02-04 01:27:47 +0100 |
commit | 01d7a356872eec22ef34a33a5f9cfa917d145468 (patch) | |
tree | 7d5a9a4359507134ddc254f6afbc9adabe064519 /arch/riscv/lib | |
parent | io_uring: put the flag changing code in the same spot (diff) | |
download | linux-01d7a356872eec22ef34a33a5f9cfa917d145468.tar.xz linux-01d7a356872eec22ef34a33a5f9cfa917d145468.zip |
aio: prevent potential eventfd recursion on poll
If we have nested or circular eventfd wakeups, then we can deadlock if
we run them inline from our poll waitqueue wakeup handler. It's also
possible to have very long chains of notifications, to the extent where
we could risk blowing the stack.
Check the eventfd recursion count before calling eventfd_signal(). If
it's non-zero, then punt the signaling to async context. This is always
safe, as it takes us out-of-line in terms of stack and locking context.
Cc: stable@vger.kernel.org # 4.19+
Reviewed-by: Jeff Moyer <jmoyer@redhat.com>
Signed-off-by: Jens Axboe <axboe@kernel.dk>
Diffstat (limited to 'arch/riscv/lib')
0 files changed, 0 insertions, 0 deletions