aboutsummaryrefslogtreecommitdiffstats
path: root/fs
diff options
context:
space:
mode:
authorJens Axboe <axboe@kernel.dk>2019-11-13 16:12:46 -0700
committerJens Axboe <axboe@kernel.dk>2019-11-13 16:15:14 -0700
commit5e559561a8d7e6d4adfce6aa8fbf3daa3dec1577 (patch)
treee517c845a7d4e0014be9cd13e7c1404dafec361e /fs
parentio_uring: Fix getting file for timeout (diff)
downloadlinux-dev-5e559561a8d7e6d4adfce6aa8fbf3daa3dec1577.tar.xz
linux-dev-5e559561a8d7e6d4adfce6aa8fbf3daa3dec1577.zip
io_uring: ensure registered buffer import returns the IO length
A test case was reported where two linked reads with registered buffers failed the second link always. This is because we set the expected value of a request in req->result, and if we don't get this result, then we fail the dependent links. For some reason the registered buffer import returned -ERROR/0, while the normal import returns -ERROR/length. This broke linked commands with registered buffers. Fix this by making io_import_fixed() correctly return the mapped length. Cc: stable@vger.kernel.org # v5.3 Reported-by: 李通洲 <carter.li@eoitek.com> Signed-off-by: Jens Axboe <axboe@kernel.dk>
Diffstat (limited to 'fs')
-rw-r--r--fs/io_uring.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/fs/io_uring.c b/fs/io_uring.c
index 57ea54d5b0fb..2c819c3c855d 100644
--- a/fs/io_uring.c
+++ b/fs/io_uring.c
@@ -1230,7 +1230,7 @@ static int io_import_fixed(struct io_ring_ctx *ctx, int rw,
}
}
- return 0;
+ return len;
}
static ssize_t io_import_iovec(struct io_ring_ctx *ctx, int rw,