If we fail to attach to a cgroup we are leaking the id. This adds
a new goto to free the id.

Fixes: 7d9896e9f6d0 ("vhost: Reintroduce kthread API and add mode selection")
Signed-off-by: Mike Christie <[email protected]>
---
 drivers/vhost/vhost.c | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/drivers/vhost/vhost.c b/drivers/vhost/vhost.c
index 8570fdf2e14a..e6df5bb4932b 100644
--- a/drivers/vhost/vhost.c
+++ b/drivers/vhost/vhost.c
@@ -804,11 +804,13 @@ static int vhost_kthread_worker_create(struct 
vhost_worker *worker,
 
        ret = vhost_attach_task_to_cgroups(worker);
        if (ret)
-               goto stop_worker;
+               goto free_id;
 
        worker->id = id;
        return 0;
 
+free_id:
+       xa_erase(&dev->worker_xa, id);
 stop_worker:
        vhost_kthread_do_stop(worker);
        return ret;
-- 
2.43.0


Reply via email to