lkml.org 
[lkml]   [2014]   [Oct]   [8]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    From
    Subject[PATCH percpu/for-3.18] percpu: fix how @gfp is interpreted by the percpu allocator
    From 6ae833c7fe0c6ef1f0ab13cc775da230d6f4c256 Mon Sep 17 00:00:00 2001
    From: Tejun Heo <tj@kernel.org>
    Date: Wed, 8 Oct 2014 12:01:52 -0400

    When @gfp is specified, the percpu allocator is interested in whether
    it contains all of GFP_KERNEL or not. If it does, the normal
    allocation path is taken; otherwise, the atomic allocation path.
    Unfortunately, pcpu_alloc() was incorrectly testing for whether @gfp
    contains any part of GFP_KERNEL.

    Fix it by testing "(gfp & GFP_KERNEL) != GFP_KERNEL" instead of
    "!(gfp & GFP_KERNEL)" to decide whether the allocation should be
    atomic or not.

    Signed-off-by: Tejun Heo <tj@kernel.org>
    ---
    Oops, noticed this while preparing the pull request for v3.18-rc1.
    Applied to percpu/for-3.18.

    Thanks.

    mm/percpu.c | 2 +-
    1 file changed, 1 insertion(+), 1 deletion(-)

    diff --git a/mm/percpu.c b/mm/percpu.c
    index e10f9f7..014bab6 100644
    --- a/mm/percpu.c
    +++ b/mm/percpu.c
    @@ -876,7 +876,7 @@ static void __percpu *pcpu_alloc(size_t size, size_t align, bool reserved,
    static int warn_limit = 10;
    struct pcpu_chunk *chunk;
    const char *err;
    - bool is_atomic = !(gfp & GFP_KERNEL);
    + bool is_atomic = (gfp & GFP_KERNEL) != GFP_KERNEL;
    int occ_pages = 0;
    int slot, off, new_alloc, cpu, ret;
    unsigned long flags;
    --
    1.9.3


    \
     
     \ /
      Last update: 2014-10-08 18:41    [W:2.219 / U:0.012 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site