• Waiman Long's avatar
    cgroup/cpuset: Make cpuset_fork() handle CLONE_INTO_CGROUP properly · 42a11bf5
    Waiman Long authored
    By default, the clone(2) syscall spawn a child process into the same
    cgroup as its parent. With the use of the CLONE_INTO_CGROUP flag
    introduced by commit ef2c41cf ("clone3: allow spawning processes
    into cgroups"), the child will be spawned into a different cgroup which
    is somewhat similar to writing the child's tid into "cgroup.threads".
    
    The current cpuset_fork() method does not properly handle the
    CLONE_INTO_CGROUP case where the cpuset of the child may be different
    from that of its parent.  Update the cpuset_fork() method to treat the
    CLONE_INTO_CGROUP case similar to cpuset_attach().
    
    Since the newly cloned task has not been running yet, its actual
    memory usage isn't known. So it is not necessary to make change to mm
    in cpuset_fork().
    
    Fixes: ef2c41cf ("clone3: allow spawning processes into cgroups")
    Reported-by: default avatarGiuseppe Scrivano <gscrivan@redhat.com>
    Signed-off-by: default avatarWaiman Long <longman@redhat.com>
    Cc: stable@vger.kernel.org # v5.7+
    Signed-off-by: default avatarTejun Heo <tj@kernel.org>
    42a11bf5
cpuset.c 114 KB