Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

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>

+49
+49
tools/testing/selftests/namespaces/listns_test.c
··· 627 627 waitpid(pid, &status, 0); 628 628 } 629 629 630 + /* 631 + * Test error cases for listns(). 632 + */ 633 + TEST(listns_error_cases) 634 + { 635 + struct ns_id_req req = { 636 + .size = sizeof(req), 637 + .spare = 0, 638 + .ns_id = 0, 639 + .ns_type = 0, 640 + .spare2 = 0, 641 + .user_ns_id = 0, 642 + }; 643 + __u64 ns_ids[10]; 644 + int ret; 645 + 646 + /* Test with invalid flags */ 647 + ret = sys_listns(&req, ns_ids, ARRAY_SIZE(ns_ids), 0xFFFF); 648 + if (errno == ENOSYS) { 649 + /* listns() not supported, skip this check */ 650 + } else { 651 + ASSERT_LT(ret, 0); 652 + ASSERT_EQ(errno, EINVAL); 653 + } 654 + 655 + /* Test with NULL ns_ids array */ 656 + ret = sys_listns(&req, NULL, 10, 0); 657 + ASSERT_LT(ret, 0); 658 + 659 + /* Test with invalid spare field */ 660 + req.spare = 1; 661 + ret = sys_listns(&req, ns_ids, ARRAY_SIZE(ns_ids), 0); 662 + if (errno == ENOSYS) { 663 + /* listns() not supported, skip this check */ 664 + } else { 665 + ASSERT_LT(ret, 0); 666 + ASSERT_EQ(errno, EINVAL); 667 + } 668 + req.spare = 0; 669 + 670 + /* Test with huge nr_ns_ids */ 671 + ret = sys_listns(&req, ns_ids, 2000000, 0); 672 + if (errno == ENOSYS) { 673 + /* listns() not supported, skip this check */ 674 + } else { 675 + ASSERT_LT(ret, 0); 676 + } 677 + } 678 + 630 679 TEST_HARNESS_MAIN