lkml.org 
[lkml]   [2010]   [Jul]   [20]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    From
    Subject[PATCH wq#for-next] workqueue: fix build problem on !CONFIG_SMP
    Commit f3421797 (workqueue: implement unbound workqueue) incorrectly
    tested CONFIG_SMP as part of a C expression in alloc/free_cwqs(). As
    CONFIG_SMP is not defined in UP, this breaks build. Fix it by using

    Found during linux-next build test.

    Signed-off-by: Tejun Heo <tj@kernel.org>
    Reported-by: Stephen Rothwell <sfr@canb.auug.org.au>
    ---
    kernel/workqueue.c | 18 ++++++++++++++----
    1 files changed, 14 insertions(+), 4 deletions(-)

    diff --git a/kernel/workqueue.c b/kernel/workqueue.c
    index aca9472..79a11e4 100644
    --- a/kernel/workqueue.c
    +++ b/kernel/workqueue.c
    @@ -2615,11 +2615,15 @@ static int alloc_cwqs(struct workqueue_struct *wq)
    const size_t size = sizeof(struct cpu_workqueue_struct);
    const size_t align = max_t(size_t, 1 << WORK_STRUCT_FLAG_BITS,
    __alignof__(unsigned long long));
    +#ifdef CONFIG_SMP
    + bool percpu = !(wq->flags & WQ_UNBOUND);
    +#else
    + bool percpu = false;
    +#endif

    - if (CONFIG_SMP && !(wq->flags & WQ_UNBOUND)) {
    - /* on SMP, percpu allocator can align itself */
    + if (percpu)
    wq->cpu_wq.pcpu = __alloc_percpu(size, align);
    - } else {
    + else {
    void *ptr;

    /*
    @@ -2641,7 +2645,13 @@ static int alloc_cwqs(struct workqueue_struct *wq)

    static void free_cwqs(struct workqueue_struct *wq)
    {
    - if (CONFIG_SMP && !(wq->flags & WQ_UNBOUND))
    +#ifdef CONFIG_SMP
    + bool percpu = !(wq->flags & WQ_UNBOUND);
    +#else
    + bool percpu = false;
    +#endif
    +
    + if (percpu)
    free_percpu(wq->cpu_wq.pcpu);
    else if (wq->cpu_wq.single) {
    /* the pointer to free is stored right after the cwq */
    --
    1.6.4.2


    \
     
     \ /
      Last update: 2010-07-20 11:19    [W:0.026 / U:0.096 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site