From cdbd7f0ecf2e0aaa06bdf4922480347c072ad7b8 Mon Sep 17 00:00:00 2001 From: Tejun Heo Date: Tue, 11 Jan 2011 15:58:49 +0100 Subject: [PATCH] --- yaml --- r: 232136 b: refs/heads/master c: 42c025f3de9042d9c9abd9a6f6205d1a0f4bcadf h: refs/heads/master v: v3 --- [refs] | 2 +- trunk/kernel/workqueue.c | 6 +++++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/[refs] b/[refs] index d9dc6fbe2456..328e19ebf12b 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: e159489baa717dbae70f9903770a6a4990865887 +refs/heads/master: 42c025f3de9042d9c9abd9a6f6205d1a0f4bcadf diff --git a/trunk/kernel/workqueue.c b/trunk/kernel/workqueue.c index 930c2390b77e..11869faa6819 100644 --- a/trunk/kernel/workqueue.c +++ b/trunk/kernel/workqueue.c @@ -768,7 +768,11 @@ static inline void worker_clr_flags(struct worker *worker, unsigned int flags) worker->flags &= ~flags; - /* if transitioning out of NOT_RUNNING, increment nr_running */ + /* + * If transitioning out of NOT_RUNNING, increment nr_running. Note + * that the nested NOT_RUNNING is not a noop. NOT_RUNNING is mask + * of multiple flags, not a single flag. + */ if ((flags & WORKER_NOT_RUNNING) && (oflags & WORKER_NOT_RUNNING)) if (!(worker->flags & WORKER_NOT_RUNNING)) atomic_inc(get_gcwq_nr_running(gcwq->cpu));