diff options
author | Takashi Iwai <tiwai@suse.de> | 2025-03-13 07:33:48 +0100 |
---|---|---|
committer | Takashi Iwai <tiwai@suse.de> | 2025-03-13 07:33:48 +0100 |
commit | de69d56daac6d9b98fa384184078751db1288144 (patch) | |
tree | b95ab78aa8d55bfc9a08990097594125c13f0614 /kernel/workqueue.c | |
parent | b11a74ac4f545626d0dc95a8ca8c41df90532bf3 (diff) | |
parent | 658fb7fe8e7f4014ea17a4da0e0c1d9bc319fa35 (diff) |
Merge tag 'asoc-fix-v6.14-rc6' of https://git.kernel.org/pub/scm/linux/kernel/git/broonie/sound into for-linus
ASoC: Fixes for v6.14
The bulk of this is driver specific fixes, mostly unremarkable. There's
also one core fix from Charles, fixing up confusion around the limiting
of maximum control values.
Diffstat (limited to 'kernel/workqueue.c')
-rw-r--r-- | kernel/workqueue.c | 16 |
1 files changed, 9 insertions, 7 deletions
diff --git a/kernel/workqueue.c b/kernel/workqueue.c index 3c2c45313c88..bfe030b443e2 100644 --- a/kernel/workqueue.c +++ b/kernel/workqueue.c @@ -2254,8 +2254,10 @@ static void __queue_work(int cpu, struct workqueue_struct *wq, * queues a new work item to a wq after destroy_workqueue(wq). */ if (unlikely(wq->flags & (__WQ_DESTROYING | __WQ_DRAINING) && - WARN_ON_ONCE(!is_chained_work(wq)))) + WARN_ONCE(!is_chained_work(wq), "workqueue: cannot queue %ps on wq %s\n", + work->func, wq->name))) { return; + } rcu_read_lock(); retry: /* pwq which will be used unless @work is executing elsewhere */ @@ -3517,12 +3519,6 @@ repeat: } /* - * Put the reference grabbed by send_mayday(). @pool won't - * go away while we're still attached to it. - */ - put_pwq(pwq); - - /* * Leave this pool. Notify regular workers; otherwise, we end up * with 0 concurrency and stalling the execution. */ @@ -3532,6 +3528,12 @@ repeat: worker_detach_from_pool(rescuer); + /* + * Put the reference grabbed by send_mayday(). @pool might + * go away any time after it. + */ + put_pwq_unlocked(pwq); + raw_spin_lock_irq(&wq_mayday_lock); } |