Commit 754320d6 authored by Leon Yu's avatar Leon Yu Committed by Benjamin LaHaise

aio: fix potential leak in aio_run_iocb().

iovec should be reclaimed whenever caller of rw_copy_check_uvector() returns,
but it doesn't hold when failure happens right after aio_setup_vectored_rw().

Fix that in a such way to avoid hairy goto.
Signed-off-by: default avatarLeon Yu <chianglungyu@gmail.com>
Signed-off-by: default avatarBenjamin LaHaise <bcrl@kvack.org>
Cc: stable@vger.kernel.org
parent e02ba72a
...@@ -1327,10 +1327,8 @@ static ssize_t aio_run_iocb(struct kiocb *req, unsigned opcode, ...@@ -1327,10 +1327,8 @@ static ssize_t aio_run_iocb(struct kiocb *req, unsigned opcode,
&iovec, compat) &iovec, compat)
: aio_setup_single_vector(req, rw, buf, &nr_segs, : aio_setup_single_vector(req, rw, buf, &nr_segs,
iovec); iovec);
if (ret) if (!ret)
return ret; ret = rw_verify_area(rw, file, &req->ki_pos, req->ki_nbytes);
ret = rw_verify_area(rw, file, &req->ki_pos, req->ki_nbytes);
if (ret < 0) { if (ret < 0) {
if (iovec != &inline_vec) if (iovec != &inline_vec)
kfree(iovec); kfree(iovec);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment