diff options
-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 11869faa6819..90a17ca2ad0b 100644 --- a/kernel/workqueue.c +++ b/kernel/workqueue.c | |||
@@ -2047,6 +2047,15 @@ repeat: | |||
2047 | move_linked_works(work, scheduled, &n); | 2047 | move_linked_works(work, scheduled, &n); |
2048 | 2048 | ||
2049 | process_scheduled_works(rescuer); | 2049 | process_scheduled_works(rescuer); |
2050 | |||
2051 | /* | ||
2052 | * Leave this gcwq. If keep_working() is %true, notify a | ||
2053 | * regular worker; otherwise, we end up with 0 concurrency | ||
2054 | * and stalling the execution. | ||
2055 | */ | ||
2056 | if (keep_working(gcwq)) | ||
2057 | wake_up_worker(gcwq); | ||
2058 | |||
2050 | spin_unlock_irq(&gcwq->lock); | 2059 | spin_unlock_irq(&gcwq->lock); |
2051 | } | 2060 | } |
2052 | 2061 | ||