Patch "selftests/bpf: Run cgroup1_hierarchy test in own mount namespace" has been added to the 6.8-stable tree

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



This is a note to let you know that I've just added the patch titled

    selftests/bpf: Run cgroup1_hierarchy test in own mount namespace

to the 6.8-stable tree which can be found at:
    http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary

The filename of the patch is:
     selftests-bpf-run-cgroup1_hierarchy-test-in-own-moun.patch
and it can be found in the queue-6.8 subdirectory.

If you, or anyone else, feels it should not be added to the stable tree,
please let <stable@xxxxxxxxxxxxxxx> know about it.



commit 3c249774ebe0e7dfe7391c096b350a466a31f9d0
Author: Viktor Malik <vmalik@xxxxxxxxxx>
Date:   Mon Apr 29 13:23:11 2024 +0200

    selftests/bpf: Run cgroup1_hierarchy test in own mount namespace
    
    [ Upstream commit 19468ed51488dae19254e8a67c75d583b05fa5e3 ]
    
    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: 360769233cc9 ("selftests/bpf: Add selftests for cgroup1 hierarchy")
    Signed-off-by: Viktor Malik <vmalik@xxxxxxxxxx>
    Signed-off-by: Andrii Nakryiko <andrii@xxxxxxxxxx>
    Link: https://lore.kernel.org/bpf/20240429112311.402497-1-vmalik@xxxxxxxxxx
    Signed-off-by: Sasha Levin <sashal@xxxxxxxxxx>

diff --git a/tools/testing/selftests/bpf/cgroup_helpers.c b/tools/testing/selftests/bpf/cgroup_helpers.c
index 19be9c63d5e84..e812876d79c7e 100644
--- a/tools/testing/selftests/bpf/cgroup_helpers.c
+++ b/tools/testing/selftests/bpf/cgroup_helpers.c
@@ -508,6 +508,9 @@ int cgroup_setup_and_join(const char *path) {
 /**
  * setup_classid_environment() - Setup the cgroupv1 net_cls environment
  *
+ * This function should only be called in a custom mount namespace, e.g.
+ * created by running setup_cgroup_environment.
+ *
  * After calling this function, cleanup_classid_environment should be called
  * once testing is complete.
  *
diff --git a/tools/testing/selftests/bpf/prog_tests/cgroup1_hierarchy.c b/tools/testing/selftests/bpf/prog_tests/cgroup1_hierarchy.c
index 74d6d7546f40f..25332e596750f 100644
--- a/tools/testing/selftests/bpf/prog_tests/cgroup1_hierarchy.c
+++ b/tools/testing/selftests/bpf/prog_tests/cgroup1_hierarchy.c
@@ -87,9 +87,12 @@ void test_cgroup1_hierarchy(void)
 		goto destroy;
 
 	/* Setup cgroup1 hierarchy */
+	err = setup_cgroup_environment();
+	if (!ASSERT_OK(err, "setup_cgroup_environment"))
+		goto destroy;
 	err = setup_classid_environment();
 	if (!ASSERT_OK(err, "setup_classid_environment"))
-		goto destroy;
+		goto cleanup_cgroup;
 
 	err = join_classid();
 	if (!ASSERT_OK(err, "join_cgroup1"))
@@ -153,6 +156,8 @@ void test_cgroup1_hierarchy(void)
 
 cleanup:
 	cleanup_classid_environment();
+cleanup_cgroup:
+	cleanup_cgroup_environment();
 destroy:
 	test_cgroup1_hierarchy__destroy(skel);
 }




[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux