• L
    cgroup: fix exit() vs rmdir() race · 71b5707e
    Li Zefan 提交于
    In cgroup_exit() put_css_set_taskexit() is called without any lock,
    which might lead to accessing a freed cgroup:
    
    thread1                           thread2
    ---------------------------------------------
    exit()
      cgroup_exit()
        put_css_set_taskexit()
          atomic_dec(cgrp->count);
                                       rmdir();
          /* not safe !! */
          check_for_release(cgrp);
    
    rcu_read_lock() can be used to make sure the cgroup is alive.
    Signed-off-by: NLi Zefan <lizefan@huawei.com>
    Signed-off-by: NTejun Heo <tj@kernel.org>
    Cc: stable@vger.kernel.org
    71b5707e
cgroup.c 148.0 KB