]> git.baikalelectronics.ru Git - kernel.git/commit
aio: prevent potential eventfd recursion on poll
authorJens Axboe <axboe@kernel.dk>
Mon, 3 Feb 2020 17:33:42 +0000 (10:33 -0700)
committerJens Axboe <axboe@kernel.dk>
Tue, 4 Feb 2020 00:27:47 +0000 (17:27 -0700)
commite896f41e222d631299aa64a9e50e8344ada7f782
tree7d5a9a4359507134ddc254f6afbc9adabe064519
parentf0856ca622c9658ad556538ddaaca98e476962ac
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>
fs/aio.c