]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
vhost: return task creation error instead of NULL
authorKeith Busch <kbusch@kernel.org>
Thu, 27 Feb 2025 23:06:30 +0000 (15:06 -0800)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Sat, 22 Mar 2025 19:54:21 +0000 (12:54 -0700)
[ Upstream commit cb380909ae3b1ebf14d6a455a4f92d7916d790cb ]

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>
Signed-off-by: Sasha Levin <sashal@kernel.org>
arch/x86/kvm/mmu/mmu.c
drivers/vhost/vhost.c
kernel/vhost_task.c

index 19c96278ba755de82bfbf3b88d14512f14312a2e..9242c0649adf1bd7e8706d162c1950f464e5f875 100644 (file)
@@ -7589,7 +7589,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 9ac25d08f473e832f375aad71d9811b21555bbdb..63612faeab72715d884c53e526f47f5588750f2b 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 8800f5acc00717b956ea0915c976e647a010aed7..2ef2e1b8009165d05d96935737204706dbdedbd1 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;