]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
workqueue: Register sysfs after the whole creation of the new wq
authorLai Jiangshan <jiangshan.ljs@antgroup.com>
Thu, 4 Jul 2024 03:49:10 +0000 (11:49 +0800)
committerTejun Heo <tj@kernel.org>
Fri, 5 Jul 2024 19:14:40 +0000 (09:14 -1000)
workqueue creation includes adding it to the workqueue list.

Prepare for moving the whole workqueue initializing procedure into
wq_pool_mutex and cpu hotplug locks.

Signed-off-by: Lai Jiangshan <jiangshan.ljs@antgroup.com>
Signed-off-by: Tejun Heo <tj@kernel.org>
kernel/workqueue.c

index 32ac6f1e94a8f04886f6531556d1d35d0495396d..5cb1dd0a49fbcf19394307112b8cd83f7fabc5e8 100644 (file)
@@ -5684,9 +5684,6 @@ struct workqueue_struct *alloc_workqueue(const char *fmt,
        if (wq_online && init_rescuer(wq) < 0)
                goto err_destroy;
 
-       if ((wq->flags & WQ_SYSFS) && workqueue_sysfs_register(wq))
-               goto err_destroy;
-
        /*
         * wq_pool_mutex protects global freeze state and workqueues list.
         * Grab it, adjust max_active and add the new @wq to workqueues
@@ -5702,6 +5699,9 @@ struct workqueue_struct *alloc_workqueue(const char *fmt,
 
        mutex_unlock(&wq_pool_mutex);
 
+       if ((wq->flags & WQ_SYSFS) && workqueue_sysfs_register(wq))
+               goto err_destroy;
+
        return wq;
 
 err_free_node_nr_active: