• Jens Axboe's avatar
    eventfd: track eventfd_signal() recursion depth · b5e683d5
    Jens Axboe authored
    eventfd use cases from aio and io_uring can deadlock due to circular
    or resursive calling, when eventfd_signal() tries to grab the waitqueue
    lock. On top of that, it's also possible to construct notification
    chains that are deep enough that we could blow the stack.
    
    Add a percpu counter that tracks the percpu recursion depth, warn if we
    exceed it. The counter is also exposed so that users of eventfd_signal()
    can do the right thing if it's non-zero in the context where it is
    called.
    
    Cc: stable@vger.kernel.org # 4.19+
    Signed-off-by: default avatarJens Axboe <axboe@kernel.dk>
    b5e683d5
eventfd.c 11.6 KB