lkml.org 
[lkml]   [2008]   [Nov]   [11]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    From
    Subject[patch 07/49] cgroups: fix invalid cgrp->dentry before cgroup has been completely removed
    2.6.27-stable review patch.  If anyone has any objections, please let us know.

    ------------------

    From: Li Zefan <lizf@cn.fujitsu.com>

    commit 24eb089950ce44603b30a3145a2c8520e2b55bb1 upstream

    This fixes an oops when reading /proc/sched_debug.

    A cgroup won't be removed completely until finishing cgroup_diput(), so we
    shouldn't invalidate cgrp->dentry in cgroup_rmdir(). Otherwise, when a
    group is being removed while cgroup_path() gets called, we may trigger
    NULL dereference BUG.

    The bug can be reproduced:

    # cat test.sh
    #!/bin/sh
    mount -t cgroup -o cpu xxx /mnt
    for (( ; ; ))
    {
    mkdir /mnt/sub
    rmdir /mnt/sub
    }
    # ./test.sh &
    # cat /proc/sched_debug

    BUG: unable to handle kernel NULL pointer dereference at 00000038
    IP: [<c045a47f>] cgroup_path+0x39/0x90
    ..
    Call Trace:
    [<c0420344>] ? print_cfs_rq+0x6e/0x75d
    [<c0421160>] ? sched_debug_show+0x72d/0xc1e
    ..

    Signed-off-by: Li Zefan <lizf@cn.fujitsu.com>
    Acked-by: Paul Menage <menage@google.com>
    Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
    Cc: Ingo Molnar <mingo@elte.hu>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>

    ---
    kernel/cgroup.c | 1 -
    1 file changed, 1 deletion(-)

    --- a/kernel/cgroup.c
    +++ b/kernel/cgroup.c
    @@ -2443,7 +2443,6 @@ static int cgroup_rmdir(struct inode *un
    list_del(&cgrp->sibling);
    spin_lock(&cgrp->dentry->d_lock);
    d = dget(cgrp->dentry);
    - cgrp->dentry = NULL;
    spin_unlock(&d->d_lock);

    cgroup_d_remove_dir(d);
    --


    \
     
     \ /
      Last update: 2008-11-12 01:31    [W:0.024 / U:123.464 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site