From: Colin Ian King <colin.k...@canonical.com>

The error return when create_io_thread calls fail is not using the
error return code from the returned pointer. Fix this by using
the error code in PTR_ERR(tsk).

Addresses-Coverity: ("Uninitialized scalar variable")
Fixes: c3c9a3194bd0 ("io_uring: move to using create_io_thread()")
Signed-off-by: Colin Ian King <colin.k...@canonical.com>
---
 fs/io_uring.c | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

diff --git a/fs/io_uring.c b/fs/io_uring.c
index b52ef6df4aac..59b024dba4dc 100644
--- a/fs/io_uring.c
+++ b/fs/io_uring.c
@@ -7787,7 +7787,7 @@ static int io_sq_thread_fork(struct io_sq_data *sqd, 
struct io_ring_ctx *ctx)
        sqd->task_pid = current->pid;
        tsk = create_io_thread(io_sq_thread, sqd, NUMA_NO_NODE);
        if (IS_ERR(tsk))
-               return ret;
+               return PTR_ERR(tsk);
        ret = io_uring_alloc_task_context(tsk, ctx);
        if (ret)
                set_bit(IO_SQ_THREAD_SHOULD_STOP, &sqd->state);
@@ -7859,8 +7859,10 @@ static int io_sq_offload_create(struct io_ring_ctx *ctx,
 
                sqd->task_pid = current->pid;
                tsk = create_io_thread(io_sq_thread, sqd, NUMA_NO_NODE);
-               if (IS_ERR(tsk))
+               if (IS_ERR(tsk)) {
+                       ret = PTR_ERR(tsk);
                        goto err;
+               }
                ret = io_uring_alloc_task_context(tsk, ctx);
                if (ret)
                        set_bit(IO_SQ_THREAD_SHOULD_STOP, &sqd->state);
-- 
2.30.0

Reply via email to