• Viktor Malik's avatar
    selftests/bpf: Run cgroup1_hierarchy test in own mount namespace · 19468ed5
    Viktor Malik authored
    The cgroup1_hierarchy test uses setup_classid_environment to setup
    cgroupv1 environment. The problem is that the environment is set in
    /sys/fs/cgroup and therefore, if not run under an own mount namespace,
    effectively deletes all system cgroups:
    
        $ ls /sys/fs/cgroup | wc -l
        27
        $ sudo ./test_progs -t cgroup1_hierarchy
        #41/1    cgroup1_hierarchy/test_cgroup1_hierarchy:OK
        #41/2    cgroup1_hierarchy/test_root_cgid:OK
        #41/3    cgroup1_hierarchy/test_invalid_level:OK
        #41/4    cgroup1_hierarchy/test_invalid_cgid:OK
        #41/5    cgroup1_hierarchy/test_invalid_hid:OK
        #41/6    cgroup1_hierarchy/test_invalid_cgrp_name:OK
        #41/7    cgroup1_hierarchy/test_invalid_cgrp_name2:OK
        #41/8    cgroup1_hierarchy/test_sleepable_prog:OK
        #41      cgroup1_hierarchy:OK
        Summary: 1/8 PASSED, 0 SKIPPED, 0 FAILED
        $ ls /sys/fs/cgroup | wc -l
        1
    
    To avoid this, run setup_cgroup_environment first which will create an
    own mount namespace. This only affects the cgroupv1_hierarchy test as
    all other cgroup1 test progs already run setup_cgroup_environment prior
    to running setup_classid_environment.
    
    Also add a comment to the header of setup_classid_environment to warn
    against this invalid usage in future.
    
    Fixes: 36076923 ("selftests/bpf: Add selftests for cgroup1 hierarchy")
    Signed-off-by: default avatarViktor Malik <vmalik@redhat.com>
    Signed-off-by: default avatarAndrii Nakryiko <andrii@kernel.org>
    Link: https://lore.kernel.org/bpf/20240429112311.402497-1-vmalik@redhat.com
    19468ed5
cgroup_helpers.c 17.8 KB