• Michal Koutný's avatar
    cgroup: Iterate tasks that did not finish do_exit() · 9c974c77
    Michal Koutný authored
    PF_EXITING is set earlier than actual removal from css_set when a task
    is exitting. This can confuse cgroup.procs readers who see no PF_EXITING
    tasks, however, rmdir is checking against css_set membership so it can
    transitionally fail with EBUSY.
    
    Fix this by listing tasks that weren't unlinked from css_set active
    lists.
    It may happen that other users of the task iterator (without
    CSS_TASK_ITER_PROCS) spot a PF_EXITING task before cgroup_exit(). This
    is equal to the state before commit c03cd773 ("cgroup: Include dying
    leaders with live threads in PROCS iterations") but it may be reviewed
    later.
    Reported-by: default avatarSuren Baghdasaryan <surenb@google.com>
    Fixes: c03cd773 ("cgroup: Include dying leaders with live threads in PROCS iterations")
    Signed-off-by: default avatarMichal Koutný <mkoutny@suse.com>
    Signed-off-by: default avatarTejun Heo <tj@kernel.org>
    9c974c77
cgroup.c 167 KB