• Jens Axboe's avatar
    eventfd: track eventfd_signal() recursion depth · eaef83c4
    Jens Axboe authored
    commit b5e683d5 upstream.
    
    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>
    Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
    eaef83c4
eventfd.c 11.4 KB