]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
io_uring/nop: pass all errors to userspace
authorAlexander A. Klimov <grandmaster@al2klimov.de>
Wed, 20 May 2026 18:00:44 +0000 (20:00 +0200)
committerJens Axboe <axboe@kernel.dk>
Thu, 21 May 2026 17:10:56 +0000 (11:10 -0600)
This fixes an inconsistency where io_nop() called req_set_fail()
based on ret, but passed just nop->result to userspace.
Originally, ret is a even copy of nop->result, but is set to an error
when such happens subsequently. Now that's also passed to userspace.

Fixes: a85f31052bce ("io_uring/nop: add support for testing registered files and buffers")
Signed-off-by: Alexander A. Klimov <grandmaster@al2klimov.de>
Link: https://patch.msgid.link/20260520180045.538533-1-grandmaster@al2klimov.de
Signed-off-by: Jens Axboe <axboe@kernel.dk>
io_uring/nop.c

index 3caf07878f8acaff85c0f6ecd75d1fbe648c453f..f5c9969e7f64a5251b83d1d6abc59871aebd4705 100644 (file)
@@ -79,9 +79,9 @@ done:
        if (ret < 0)
                req_set_fail(req);
        if (nop->flags & IORING_NOP_CQE32)
-               io_req_set_res32(req, nop->result, 0, nop->extra1, nop->extra2);
+               io_req_set_res32(req, ret, 0, nop->extra1, nop->extra2);
        else
-               io_req_set_res(req, nop->result, 0);
+               io_req_set_res(req, ret, 0);
        if (nop->flags & IORING_NOP_TW) {
                req->io_task_work.func = io_req_task_complete;
                io_req_task_work_add(req);