diff options
| author | Takashi Iwai <tiwai@suse.de> | 2013-09-11 12:38:45 +0200 |
|---|---|---|
| committer | Takashi Iwai <tiwai@suse.de> | 2013-09-11 12:38:45 +0200 |
| commit | 3d0049e8529adaa36c38a7b400792f6c37b66c92 (patch) | |
| tree | 7d2e30a5e3f12207305ffc76d80d310c0a95fdcc /kernel/workqueue.c | |
| parent | be8cf44526d8972c2dbf6e561162dad924a712a5 (diff) | |
| parent | 2ae2caff8348378c9e464353e9860ee97583c00b (diff) | |
Merge tag 'asoc-v3.12-4' of git://git.kernel.org/pub/scm/linux/kernel/git/broonie/sound into for-linus
ASoC: Fixes for v3.12
A few small fixes, nothing with any broad impact but all useful for the
affected systems. The Kirkwood compatible string change is fixing up a
string just added in the merge window so that we don't get any changes
in released kernels.
Diffstat (limited to 'kernel/workqueue.c')
| -rw-r--r-- | kernel/workqueue.c | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/kernel/workqueue.c b/kernel/workqueue.c index 7f5d4be22034..e93f7b9067d8 100644 --- a/kernel/workqueue.c +++ b/kernel/workqueue.c @@ -2201,6 +2201,15 @@ __acquires(&pool->lock) dump_stack(); } + /* + * The following prevents a kworker from hogging CPU on !PREEMPT + * kernels, where a requeueing work item waiting for something to + * happen could deadlock with stop_machine as such work item could + * indefinitely requeue itself while all other CPUs are trapped in + * stop_machine. + */ + cond_resched(); + spin_lock_irq(&pool->lock); /* clear cpu intensive status */ |
