• Roman Gushchin's avatar
    cgroup: freezer: fix frozen state inheritance · 97a61369
    Roman Gushchin authored
    If a new child cgroup is created in the frozen cgroup hierarchy
    (one or more of ancestor cgroups is frozen), the CGRP_FREEZE cgroup
    flag should be set. Otherwise if a process will be attached to the
    child cgroup, it won't become frozen.
    
    The problem can be reproduced with the test_cgfreezer_mkdir test.
    
    This is the output before this patch:
      ~/test_freezer
      ok 1 test_cgfreezer_simple
      ok 2 test_cgfreezer_tree
      ok 3 test_cgfreezer_forkbomb
      Cgroup /sys/fs/cgroup/cg_test_mkdir_A/cg_test_mkdir_B isn't frozen
      not ok 4 test_cgfreezer_mkdir
      ok 5 test_cgfreezer_rmdir
      ok 6 test_cgfreezer_migrate
      ok 7 test_cgfreezer_ptrace
      ok 8 test_cgfreezer_stopped
      ok 9 test_cgfreezer_ptraced
      ok 10 test_cgfreezer_vfork
    
    And with this patch:
      ~/test_freezer
      ok 1 test_cgfreezer_simple
      ok 2 test_cgfreezer_tree
      ok 3 test_cgfreezer_forkbomb
      ok 4 test_cgfreezer_mkdir
      ok 5 test_cgfreezer_rmdir
      ok 6 test_cgfreezer_migrate
      ok 7 test_cgfreezer_ptrace
      ok 8 test_cgfreezer_stopped
      ok 9 test_cgfreezer_ptraced
      ok 10 test_cgfreezer_vfork
    Reported-by: default avatarMark Crossen <mcrossen@fb.com>
    Signed-off-by: default avatarRoman Gushchin <guro@fb.com>
    Fixes: 76f969e8 ("cgroup: cgroup v2 freezer")
    Cc: Tejun Heo <tj@kernel.org>
    Cc: stable@vger.kernel.org # v5.2+
    Signed-off-by: default avatarTejun Heo <tj@kernel.org>
    97a61369
cgroup.c 171 KB