]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
workqueue: Fix missed pwq_release_worker creation in wq_cpu_intensive_thresh_init()
authorZqiang <qiang.zhang1211@gmail.com>
Mon, 11 Sep 2023 08:27:22 +0000 (16:27 +0800)
committerTejun Heo <tj@kernel.org>
Mon, 18 Sep 2023 18:50:31 +0000 (08:50 -1000)
Currently, if the wq_cpu_intensive_thresh_us is set to specific
value, will cause the wq_cpu_intensive_thresh_init() early exit
and missed creation of pwq_release_worker. this commit therefore
create the pwq_release_worker in advance before checking the
wq_cpu_intensive_thresh_us.

Signed-off-by: Zqiang <qiang.zhang1211@gmail.com>
Signed-off-by: Tejun Heo <tj@kernel.org>
Fixes: 967b494e2fd1 ("workqueue: Use a kthread_worker to release pool_workqueues")
kernel/workqueue.c

index 129328b765fb84ec48930869c4b26477cfc11136..b9f053a5a5f07157a06ce08d60c9516faccb7d21 100644 (file)
@@ -6602,13 +6602,13 @@ static void __init wq_cpu_intensive_thresh_init(void)
        unsigned long thresh;
        unsigned long bogo;
 
+       pwq_release_worker = kthread_create_worker(0, "pool_workqueue_release");
+       BUG_ON(IS_ERR(pwq_release_worker));
+
        /* if the user set it to a specific value, keep it */
        if (wq_cpu_intensive_thresh_us != ULONG_MAX)
                return;
 
-       pwq_release_worker = kthread_create_worker(0, "pool_workqueue_release");
-       BUG_ON(IS_ERR(pwq_release_worker));
-
        /*
         * The default of 10ms is derived from the fact that most modern (as of
         * 2023) processors can do a lot in 10ms and that it's just below what