]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
selftests/namespaces: eigth inactive namespace resurrection test
authorChristian Brauner <brauner@kernel.org>
Wed, 29 Oct 2025 12:21:15 +0000 (13:21 +0100)
committerChristian Brauner <brauner@kernel.org>
Mon, 3 Nov 2025 16:41:23 +0000 (17:41 +0100)
Test IPv6 sockets also work with SIOCGSKNS.

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

index 60028eeecde07836a08f223d063b2cc4aae28b7b..47c1524a864825abc71f1ec80ddd7719c03a89b0 100644 (file)
@@ -542,4 +542,38 @@ TEST(siocgskns_netns_lifecycle)
        close(sock_fd);
 }
 
+/*
+ * Test IPv6 sockets also work with SIOCGSKNS.
+ */
+TEST(siocgskns_ipv6)
+{
+       int sock_fd, netns_fd, current_netns_fd;
+       struct stat st1, st2;
+
+       /* Create an IPv6 TCP socket */
+       sock_fd = socket(AF_INET6, SOCK_STREAM, 0);
+       ASSERT_GE(sock_fd, 0);
+
+       /* Use SIOCGSKNS */
+       netns_fd = ioctl(sock_fd, SIOCGSKNS);
+       if (netns_fd < 0) {
+               close(sock_fd);
+               if (errno == ENOTTY || errno == EINVAL)
+                       SKIP(return, "SIOCGSKNS not supported");
+               ASSERT_GE(netns_fd, 0);
+       }
+
+       /* Verify it matches current namespace */
+       current_netns_fd = open("/proc/self/ns/net", O_RDONLY);
+       ASSERT_GE(current_netns_fd, 0);
+
+       ASSERT_EQ(fstat(netns_fd, &st1), 0);
+       ASSERT_EQ(fstat(current_netns_fd, &st2), 0);
+       ASSERT_EQ(st1.st_ino, st2.st_ino);
+
+       close(sock_fd);
+       close(netns_fd);
+       close(current_netns_fd);
+}
+
 TEST_HARNESS_MAIN