• Lai Jiangshan's avatar
    cgroups: call find_css_set() safely in cgroup_attach_task() · 77efecd9
    Lai Jiangshan authored
    In cgroup_attach_task(), tsk maybe exit when we call find_css_set().  and
    find_css_set() will access to invalid css_set.
    
    This patch increases the count before get_css_set(), and decreases it
    after find_css_set().
    
    NOTE:
    
    css_set's refcount is also taskcount, after this patch applied, taskcount
    may be off-by-one WHEN cgroup_lock() is not held.  but I reviewed other
    code which use taskcount, they are still correct.  No regression found by
    reviewing and simply testing.
    
    So I do not use two counters in css_set.  (one counter for taskcount, the
    other for refcount.  like struct mm_struct) If this fix cause regression,
    we will use two counters in css_set.
    Signed-off-by: default avatarLai Jiangshan <laijs@cn.fujitsu.com>
    Cc: Paul Menage <menage@google.com>
    Cc: KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>
    Cc: Pavel Emelyanov <xemul@openvz.org>
    Cc: Balbir Singh <balbir@in.ibm.com>
    Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
    Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
    77efecd9
cgroup.c 81.9 KB