• Jens Axboe's avatar
    aio: prevent potential eventfd recursion on poll · 01d7a356
    Jens Axboe authored
    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: default avatarJeff Moyer <jmoyer@redhat.com>
    Signed-off-by: default avatarJens Axboe <axboe@kernel.dk>
    01d7a356
aio.c 56.4 KB