diff options
author | Pavel Begunkov <[email protected]> | 2020-02-06 19:51:16 +0300 |
---|---|---|
committer | Jens Axboe <[email protected]> | 2020-02-06 13:58:57 -0700 |
commit | 1e95081cb5b4cf77065d37866f57cf3c90a3df78 (patch) | |
tree | 35f81194060211299102a3e9ce37349a338ae6c0 /drivers/usb/cdns3/cdns3-pci-wrap.c | |
parent | e1d85334d62386e9503e4a0d5d022e2d8e0011a0 (diff) |
io_uring: fix deferred req iovec leak
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: [email protected] # 5.5
Signed-off-by: Pavel Begunkov <[email protected]>
Signed-off-by: Jens Axboe <[email protected]>
Diffstat (limited to 'drivers/usb/cdns3/cdns3-pci-wrap.c')
0 files changed, 0 insertions, 0 deletions