• P
    io_uring: fix deferred req iovec leak · 1e95081c
    Pavel Begunkov 提交于
    After defer, a request will be prepared, that includes allocating iovec
    if needed, and then submitted through io_wq_submit_work() but not custom
    handler (e.g. io_rw_async()/io_sendrecv_async()). However, it'll leak
    iovec, as it's in io-wq and the code goes as follows:
    
    io_read() {
    	if (!io_wq_current_is_worker())
    		kfree(iovec);
    }
    
    Put all deallocation logic in io_{read,write,send,recv}(), which will
    leave the memory, if going async with -EAGAIN.
    
    It also fixes a leak after failed io_alloc_async_ctx() in
    io_{recv,send}_msg().
    
    Cc: stable@vger.kernel.org # 5.5
    Signed-off-by: NPavel Begunkov <asml.silence@gmail.com>
    Signed-off-by: NJens Axboe <axboe@kernel.dk>
    1e95081c
io_uring.c 165.5 KB