Messages in this thread Patch in this message | | | From | Joonsoo Kim <> | Subject | [PATCH for-3.10] workqueue: correct handling of the pool spin_lock | Date | Wed, 1 May 2013 00:07:00 +0900 |
| |
When we fail to mutex_trylock(), we release the pool spin_lock and do mutex_lock(). After that, we should regrab the pool spin_lock, but, regrabbing is missed in current code. So correct it.
Cc: Lai Jiangshan <laijs@cn.fujitsu.com> Signed-off-by: Joonsoo Kim <iamjoonsoo.kim@lge.com>
diff --git a/kernel/workqueue.c b/kernel/workqueue.c index 154aa12..e02994f 100644 --- a/kernel/workqueue.c +++ b/kernel/workqueue.c @@ -2058,6 +2058,7 @@ static bool manage_workers(struct worker *worker) if (unlikely(!mutex_trylock(&pool->manager_mutex))) { spin_unlock_irq(&pool->lock); mutex_lock(&pool->manager_mutex); + spin_lock_irq(&pool->lock); ret = true; } -- 1.7.9.5
| |