• Dylan Yudaken's avatar
    io_uring: fix multishot poll on overflow · a2da6763
    Dylan Yudaken authored
    On overflow, multishot poll can still complete with the IORING_CQE_F_MORE
    flag set.
    If in the meantime the user clears a CQE and a the poll was cancelled then
    the poll will post a CQE without the IORING_CQE_F_MORE (and likely result
    -ECANCELED).
    
    However when processing the application will encounter the non-overflow
    CQE which indicates that there will be no more events posted. Typical
    userspace applications would free memory associated with the poll in this
    case.
    It will then subsequently receive the earlier CQE which has overflowed,
    which breaks the contract given by the IORING_CQE_F_MORE flag.
    Signed-off-by: default avatarDylan Yudaken <dylany@fb.com>
    Link: https://lore.kernel.org/r/20220630091231.1456789-9-dylany@fb.comSigned-off-by: default avatarJens Axboe <axboe@kernel.dk>
    a2da6763
poll.c 25.5 KB