lkml.org 
[lkml]   [2014]   [Jun]   [9]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 3.12 102/146] workqueue: fix bugs in wq_update_unbound_numa() failure path
    Date
    From: Daeseok Youn <daeseok.youn@gmail.com>

    3.12-stable review patch. If anyone has any objections, please let me know.

    ===============

    commit 77f300b198f93328c26191b52655ce1b62e202cf upstream.

    wq_update_unbound_numa() failure path has the following two bugs.

    - alloc_unbound_pwq() is called without holding wq->mutex; however, if
    the allocation fails, it jumps to out_unlock which tries to unlock
    wq->mutex.

    - The function should switch to dfl_pwq on failure but didn't do so
    after alloc_unbound_pwq() failure.

    Fix it by regrabbing wq->mutex and jumping to use_dfl_pwq on
    alloc_unbound_pwq() failure.

    Signed-off-by: Daeseok Youn <daeseok.youn@gmail.com>
    Acked-by: Lai Jiangshan <laijs@cn.fujitsu.com>
    Signed-off-by: Tejun Heo <tj@kernel.org>
    Fixes: 4c16bd327c74 ("workqueue: implement NUMA affinity for unbound workqueues")
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>
    ---
    kernel/workqueue.c | 3 ++-
    1 file changed, 2 insertions(+), 1 deletion(-)

    diff --git a/kernel/workqueue.c b/kernel/workqueue.c
    index 60fee69c37be..9ae0693ca520 100644
    --- a/kernel/workqueue.c
    +++ b/kernel/workqueue.c
    @@ -4090,7 +4090,8 @@ static void wq_update_unbound_numa(struct workqueue_struct *wq, int cpu,
    if (!pwq) {
    pr_warning("workqueue: allocation failed while updating NUMA affinity of \"%s\"\n",
    wq->name);
    - goto out_unlock;
    + mutex_lock(&wq->mutex);
    + goto use_dfl_pwq;
    }

    /*
    --
    1.9.3


    \
     
     \ /
      Last update: 2014-06-09 11:41    [W:4.159 / U:0.016 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site