• Pavel Begunkov's avatar
    io_uring: Fix leaking linked timeouts · 09fbb0a8
    Pavel Begunkov authored
    let have a dependant link: REQ -> LINK_TIMEOUT -> LINK_TIMEOUT
    
    1. submission stage: submission references for REQ and LINK_TIMEOUT
    are dropped. So, references respectively (1,1,2)
    
    2. io_put(REQ) + FAIL_LINKS stage: calls io_fail_links(), which for all
    linked timeouts will call cancel_timeout() and drop 1 reference.
    So, references after: (0,0,1). That's a leak.
    
    Make it treat only the first linked timeout as such, and pass others
    through __io_double_put_req().
    Signed-off-by: default avatarPavel Begunkov <asml.silence@gmail.com>
    Signed-off-by: default avatarJens Axboe <axboe@kernel.dk>
    09fbb0a8
io_uring.c 117 KB