• Jens Axboe's avatar
    eventfd: provide a eventfd_signal_mask() helper · 03e02acd
    Jens Axboe authored
    This is identical to eventfd_signal(), but it allows the caller to pass
    in a mask to be used for the poll wakeup key. The use case is avoiding
    repeated multishot triggers if we have a dependency between eventfd and
    io_uring.
    
    If we setup an eventfd context and register that as the io_uring eventfd,
    and at the same time queue a multishot poll request for the eventfd
    context, then any CQE posted will repeatedly trigger the multishot request
    until it terminates when the CQ ring overflows.
    
    In preparation for io_uring detecting this circular dependency, add the
    mentioned helper so that io_uring can pass in EPOLL_URING as part of the
    poll wakeup key.
    
    Cc: stable@vger.kernel.org # 6.0
    [axboe: fold in !CONFIG_EVENTFD fix from Zhang Qilong]
    Signed-off-by: default avatarJens Axboe <axboe@kernel.dk>
    03e02acd
eventfd.c 12.2 KB