vhost: return task creation error instead of NULL
authorKeith Busch <kbusch@kernel.org>
Thu, 27 Feb 2025 23:06:30 +0000 (15:06 -0800)
committerPaolo Bonzini <pbonzini@redhat.com>
Sat, 1 Mar 2025 07:52:52 +0000 (02:52 -0500)
Lets callers distinguish why the vhost task creation failed. No one
currently cares why it failed, so no real runtime change from this
patch, but that will not be the case for long.

Signed-off-by: Keith Busch <kbusch@kernel.org>
Message-ID: <20250227230631.303431-2-kbusch@meta.com>
Reviewed-by: Mike Christie <michael.christie@oracle.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
arch/x86/kvm/mmu/mmu.c
drivers/vhost/vhost.c
kernel/vhost_task.c

index d4ac4a1..18ca1ea 100644 (file)
@@ -7471,7 +7471,7 @@ static void kvm_mmu_start_lpage_recovery(struct once *once)
                                      kvm_nx_huge_page_recovery_worker_kill,
                                      kvm, "kvm-nx-lpage-recovery");
 
-       if (!nx_thread)
+       if (IS_ERR(nx_thread))
                return;
 
        vhost_task_start(nx_thread);
index 9ac25d0..63612fa 100644 (file)
@@ -666,7 +666,7 @@ static struct vhost_worker *vhost_worker_create(struct vhost_dev *dev)
 
        vtsk = vhost_task_create(vhost_run_work_list, vhost_worker_killed,
                                 worker, name);
-       if (!vtsk)
+       if (IS_ERR(vtsk))
                goto free_worker;
 
        mutex_init(&worker->mutex);
index 8800f5a..2ef2e1b 100644 (file)
@@ -133,7 +133,7 @@ struct vhost_task *vhost_task_create(bool (*fn)(void *),
 
        vtsk = kzalloc(sizeof(*vtsk), GFP_KERNEL);
        if (!vtsk)
-               return NULL;
+               return ERR_PTR(-ENOMEM);
        init_completion(&vtsk->exited);
        mutex_init(&vtsk->exit_mutex);
        vtsk->data = arg;
@@ -145,7 +145,7 @@ struct vhost_task *vhost_task_create(bool (*fn)(void *),
        tsk = copy_process(NULL, 0, NUMA_NO_NODE, &args);
        if (IS_ERR(tsk)) {
                kfree(vtsk);
-               return NULL;
+               return ERR_PTR(PTR_ERR(tsk));
        }
 
        vtsk->task = tsk;