]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
selftests/namespaces: ninth listns() test
authorChristian Brauner <brauner@kernel.org>
Wed, 29 Oct 2025 12:21:00 +0000 (13:21 +0100)
committerChristian Brauner <brauner@kernel.org>
Mon, 3 Nov 2025 16:41:21 +0000 (17:41 +0100)
Test error cases for listns().

Link: https://patch.msgid.link/20251029-work-namespace-nstree-listns-v4-47-2e6f823ebdc0@kernel.org
Reviewed-by: Jeff Layton <jlayton@kernel.org>
Signed-off-by: Christian Brauner <brauner@kernel.org>
tools/testing/selftests/namespaces/listns_test.c

index d3be6f97d34e5d3a34b7b62ac4394a99f4238586..8a95789d6a87bf7cde539494e7d64e1dc1a96e60 100644 (file)
@@ -627,4 +627,53 @@ TEST(listns_hierarchical_visibility)
        waitpid(pid, &status, 0);
 }
 
+/*
+ * Test error cases for listns().
+ */
+TEST(listns_error_cases)
+{
+       struct ns_id_req req = {
+               .size = sizeof(req),
+               .spare = 0,
+               .ns_id = 0,
+               .ns_type = 0,
+               .spare2 = 0,
+               .user_ns_id = 0,
+       };
+       __u64 ns_ids[10];
+       int ret;
+
+       /* Test with invalid flags */
+       ret = sys_listns(&req, ns_ids, ARRAY_SIZE(ns_ids), 0xFFFF);
+       if (errno == ENOSYS) {
+               /* listns() not supported, skip this check */
+       } else {
+               ASSERT_LT(ret, 0);
+               ASSERT_EQ(errno, EINVAL);
+       }
+
+       /* Test with NULL ns_ids array */
+       ret = sys_listns(&req, NULL, 10, 0);
+       ASSERT_LT(ret, 0);
+
+       /* Test with invalid spare field */
+       req.spare = 1;
+       ret = sys_listns(&req, ns_ids, ARRAY_SIZE(ns_ids), 0);
+       if (errno == ENOSYS) {
+               /* listns() not supported, skip this check */
+       } else {
+               ASSERT_LT(ret, 0);
+               ASSERT_EQ(errno, EINVAL);
+       }
+       req.spare = 0;
+
+       /* Test with huge nr_ns_ids */
+       ret = sys_listns(&req, ns_ids, 2000000, 0);
+       if (errno == ENOSYS) {
+               /* listns() not supported, skip this check */
+       } else {
+               ASSERT_LT(ret, 0);
+       }
+}
+
 TEST_HARNESS_MAIN