selftests/namespaces: ninth listns() test

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>
This commit is contained in:
Christian Brauner
2025-10-29 13:21:00 +01:00
parent b0de4c80fb
commit 674294a479

View 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