seltests: move nsfs into filesystems subfolder
authorChristian Brauner <brauner@kernel.org>
Thu, 12 Dec 2024 23:03:46 +0000 (00:03 +0100)
committerChristian Brauner <brauner@kernel.org>
Thu, 9 Jan 2025 15:58:52 +0000 (16:58 +0100)
I'm going to be adding new tests for it and it belongs under
filesystem selftests.

Link: https://lore.kernel.org/r/20241213-work-mount-rbtree-lockless-v3-7-6e3cdaf9b280@kernel.org
Reviewed-by: Jeff Layton <jlayton@kernel.org>
Signed-off-by: Christian Brauner <brauner@kernel.org>
tools/testing/selftests/filesystems/nsfs/.gitignore [new file with mode: 0644]
tools/testing/selftests/filesystems/nsfs/Makefile [new file with mode: 0644]
tools/testing/selftests/filesystems/nsfs/config [new file with mode: 0644]
tools/testing/selftests/filesystems/nsfs/owner.c [new file with mode: 0644]
tools/testing/selftests/filesystems/nsfs/pidns.c [new file with mode: 0644]
tools/testing/selftests/nsfs/.gitignore [deleted file]
tools/testing/selftests/nsfs/Makefile [deleted file]
tools/testing/selftests/nsfs/config [deleted file]
tools/testing/selftests/nsfs/owner.c [deleted file]
tools/testing/selftests/nsfs/pidns.c [deleted file]

diff --git a/tools/testing/selftests/filesystems/nsfs/.gitignore b/tools/testing/selftests/filesystems/nsfs/.gitignore
new file mode 100644 (file)
index 0000000..ed79ebd
--- /dev/null
@@ -0,0 +1,3 @@
+# SPDX-License-Identifier: GPL-2.0-only
+owner
+pidns
diff --git a/tools/testing/selftests/filesystems/nsfs/Makefile b/tools/testing/selftests/filesystems/nsfs/Makefile
new file mode 100644 (file)
index 0000000..c2f3ca6
--- /dev/null
@@ -0,0 +1,6 @@
+# SPDX-License-Identifier: GPL-2.0-only
+TEST_GEN_PROGS := owner pidns
+
+CFLAGS := -Wall -Werror
+
+include ../../lib.mk
diff --git a/tools/testing/selftests/filesystems/nsfs/config b/tools/testing/selftests/filesystems/nsfs/config
new file mode 100644 (file)
index 0000000..598d0a2
--- /dev/null
@@ -0,0 +1,3 @@
+CONFIG_USER_NS=y
+CONFIG_UTS_NS=y
+CONFIG_PID_NS=y
diff --git a/tools/testing/selftests/filesystems/nsfs/owner.c b/tools/testing/selftests/filesystems/nsfs/owner.c
new file mode 100644 (file)
index 0000000..96a976c
--- /dev/null
@@ -0,0 +1,92 @@
+// SPDX-License-Identifier: GPL-2.0
+#define _GNU_SOURCE
+#include <sched.h>
+#include <unistd.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <signal.h>
+#include <errno.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <fcntl.h>
+#include <sys/ioctl.h>
+#include <sys/prctl.h>
+#include <sys/wait.h>
+
+#define NSIO    0xb7
+#define NS_GET_USERNS   _IO(NSIO, 0x1)
+
+#define pr_err(fmt, ...) \
+               ({ \
+                       fprintf(stderr, "%s:%d:" fmt ": %m\n", \
+                               __func__, __LINE__, ##__VA_ARGS__); \
+                       1; \
+               })
+
+int main(int argc, char *argvp[])
+{
+       int pfd[2], ns, uns, init_uns;
+       struct stat st1, st2;
+       char path[128];
+       pid_t pid;
+       char c;
+
+       if (pipe(pfd))
+               return 1;
+
+       pid = fork();
+       if (pid < 0)
+               return pr_err("fork");
+       if (pid == 0) {
+               prctl(PR_SET_PDEATHSIG, SIGKILL);
+               if (unshare(CLONE_NEWUTS | CLONE_NEWUSER))
+                       return pr_err("unshare");
+               close(pfd[0]);
+               close(pfd[1]);
+               while (1)
+                       sleep(1);
+               return 0;
+       }
+       close(pfd[1]);
+       if (read(pfd[0], &c, 1) != 0)
+               return pr_err("Unable to read from pipe");
+       close(pfd[0]);
+
+       snprintf(path, sizeof(path), "/proc/%d/ns/uts", pid);
+       ns = open(path, O_RDONLY);
+       if (ns < 0)
+               return pr_err("Unable to open %s", path);
+
+       uns = ioctl(ns, NS_GET_USERNS);
+       if (uns < 0)
+               return pr_err("Unable to get an owning user namespace");
+
+       if (fstat(uns, &st1))
+               return pr_err("fstat");
+
+       snprintf(path, sizeof(path), "/proc/%d/ns/user", pid);
+       if (stat(path, &st2))
+               return pr_err("stat");
+
+       if (st1.st_ino != st2.st_ino)
+               return pr_err("NS_GET_USERNS returned a wrong namespace");
+
+       init_uns = ioctl(uns, NS_GET_USERNS);
+       if (uns < 0)
+               return pr_err("Unable to get an owning user namespace");
+
+       if (ioctl(init_uns, NS_GET_USERNS) >= 0 || errno != EPERM)
+               return pr_err("Don't get EPERM");
+
+       if (unshare(CLONE_NEWUSER))
+               return pr_err("unshare");
+
+       if (ioctl(ns, NS_GET_USERNS) >= 0 || errno != EPERM)
+               return pr_err("Don't get EPERM");
+       if (ioctl(init_uns, NS_GET_USERNS) >= 0 || errno != EPERM)
+               return pr_err("Don't get EPERM");
+
+       kill(pid, SIGKILL);
+       wait(NULL);
+       return 0;
+}
diff --git a/tools/testing/selftests/filesystems/nsfs/pidns.c b/tools/testing/selftests/filesystems/nsfs/pidns.c
new file mode 100644 (file)
index 0000000..e3c772c
--- /dev/null
@@ -0,0 +1,79 @@
+// SPDX-License-Identifier: GPL-2.0
+#define _GNU_SOURCE
+#include <sched.h>
+#include <unistd.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <signal.h>
+#include <errno.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <fcntl.h>
+#include <sys/ioctl.h>
+#include <sys/prctl.h>
+#include <sys/wait.h>
+
+#define pr_err(fmt, ...) \
+               ({ \
+                       fprintf(stderr, "%s:%d:" fmt ": %m\n", \
+                               __func__, __LINE__, ##__VA_ARGS__); \
+                       1; \
+               })
+
+#define NSIO   0xb7
+#define NS_GET_USERNS   _IO(NSIO, 0x1)
+#define NS_GET_PARENT   _IO(NSIO, 0x2)
+
+#define __stack_aligned__      __attribute__((aligned(16)))
+struct cr_clone_arg {
+       char stack[128] __stack_aligned__;
+       char stack_ptr[];
+};
+
+static int child(void *args)
+{
+       prctl(PR_SET_PDEATHSIG, SIGKILL);
+       while (1)
+               sleep(1);
+       exit(0);
+}
+
+int main(int argc, char *argv[])
+{
+       char *ns_strs[] = {"pid", "user"};
+       char path[] = "/proc/0123456789/ns/pid";
+       struct cr_clone_arg ca;
+       struct stat st1, st2;
+       int ns, pns, i;
+       pid_t pid;
+
+       pid = clone(child, ca.stack_ptr, CLONE_NEWUSER | CLONE_NEWPID | SIGCHLD, NULL);
+       if (pid < 0)
+               return pr_err("clone");
+
+       for (i = 0; i < 2; i++) {
+               snprintf(path, sizeof(path), "/proc/%d/ns/%s", pid, ns_strs[i]);
+               ns = open(path, O_RDONLY);
+               if (ns < 0)
+                       return pr_err("Unable to open %s", path);
+
+               pns = ioctl(ns, NS_GET_PARENT);
+               if (pns < 0)
+                       return pr_err("Unable to get a parent pidns");
+
+               snprintf(path, sizeof(path), "/proc/self/ns/%s", ns_strs[i]);
+               if (stat(path, &st2))
+                       return pr_err("Unable to stat %s", path);
+               if (fstat(pns, &st1))
+                       return pr_err("Unable to stat the parent pidns");
+               if (st1.st_ino != st2.st_ino)
+                       return pr_err("NS_GET_PARENT returned a wrong namespace");
+
+               if (ioctl(pns, NS_GET_PARENT) >= 0 || errno != EPERM)
+                       return pr_err("Don't get EPERM");
+       }
+
+       kill(pid, SIGKILL);
+       wait(NULL);
+       return 0;
+}
diff --git a/tools/testing/selftests/nsfs/.gitignore b/tools/testing/selftests/nsfs/.gitignore
deleted file mode 100644 (file)
index ed79ebd..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-# SPDX-License-Identifier: GPL-2.0-only
-owner
-pidns
diff --git a/tools/testing/selftests/nsfs/Makefile b/tools/testing/selftests/nsfs/Makefile
deleted file mode 100644 (file)
index dd9bd50..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-# SPDX-License-Identifier: GPL-2.0-only
-TEST_GEN_PROGS := owner pidns
-
-CFLAGS := -Wall -Werror
-
-include ../lib.mk
diff --git a/tools/testing/selftests/nsfs/config b/tools/testing/selftests/nsfs/config
deleted file mode 100644 (file)
index 598d0a2..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-CONFIG_USER_NS=y
-CONFIG_UTS_NS=y
-CONFIG_PID_NS=y
diff --git a/tools/testing/selftests/nsfs/owner.c b/tools/testing/selftests/nsfs/owner.c
deleted file mode 100644 (file)
index 96a976c..0000000
+++ /dev/null
@@ -1,92 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0
-#define _GNU_SOURCE
-#include <sched.h>
-#include <unistd.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <signal.h>
-#include <errno.h>
-#include <sys/types.h>
-#include <sys/stat.h>
-#include <fcntl.h>
-#include <sys/ioctl.h>
-#include <sys/prctl.h>
-#include <sys/wait.h>
-
-#define NSIO    0xb7
-#define NS_GET_USERNS   _IO(NSIO, 0x1)
-
-#define pr_err(fmt, ...) \
-               ({ \
-                       fprintf(stderr, "%s:%d:" fmt ": %m\n", \
-                               __func__, __LINE__, ##__VA_ARGS__); \
-                       1; \
-               })
-
-int main(int argc, char *argvp[])
-{
-       int pfd[2], ns, uns, init_uns;
-       struct stat st1, st2;
-       char path[128];
-       pid_t pid;
-       char c;
-
-       if (pipe(pfd))
-               return 1;
-
-       pid = fork();
-       if (pid < 0)
-               return pr_err("fork");
-       if (pid == 0) {
-               prctl(PR_SET_PDEATHSIG, SIGKILL);
-               if (unshare(CLONE_NEWUTS | CLONE_NEWUSER))
-                       return pr_err("unshare");
-               close(pfd[0]);
-               close(pfd[1]);
-               while (1)
-                       sleep(1);
-               return 0;
-       }
-       close(pfd[1]);
-       if (read(pfd[0], &c, 1) != 0)
-               return pr_err("Unable to read from pipe");
-       close(pfd[0]);
-
-       snprintf(path, sizeof(path), "/proc/%d/ns/uts", pid);
-       ns = open(path, O_RDONLY);
-       if (ns < 0)
-               return pr_err("Unable to open %s", path);
-
-       uns = ioctl(ns, NS_GET_USERNS);
-       if (uns < 0)
-               return pr_err("Unable to get an owning user namespace");
-
-       if (fstat(uns, &st1))
-               return pr_err("fstat");
-
-       snprintf(path, sizeof(path), "/proc/%d/ns/user", pid);
-       if (stat(path, &st2))
-               return pr_err("stat");
-
-       if (st1.st_ino != st2.st_ino)
-               return pr_err("NS_GET_USERNS returned a wrong namespace");
-
-       init_uns = ioctl(uns, NS_GET_USERNS);
-       if (uns < 0)
-               return pr_err("Unable to get an owning user namespace");
-
-       if (ioctl(init_uns, NS_GET_USERNS) >= 0 || errno != EPERM)
-               return pr_err("Don't get EPERM");
-
-       if (unshare(CLONE_NEWUSER))
-               return pr_err("unshare");
-
-       if (ioctl(ns, NS_GET_USERNS) >= 0 || errno != EPERM)
-               return pr_err("Don't get EPERM");
-       if (ioctl(init_uns, NS_GET_USERNS) >= 0 || errno != EPERM)
-               return pr_err("Don't get EPERM");
-
-       kill(pid, SIGKILL);
-       wait(NULL);
-       return 0;
-}
diff --git a/tools/testing/selftests/nsfs/pidns.c b/tools/testing/selftests/nsfs/pidns.c
deleted file mode 100644 (file)
index e3c772c..0000000
+++ /dev/null
@@ -1,79 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0
-#define _GNU_SOURCE
-#include <sched.h>
-#include <unistd.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <signal.h>
-#include <errno.h>
-#include <sys/types.h>
-#include <sys/stat.h>
-#include <fcntl.h>
-#include <sys/ioctl.h>
-#include <sys/prctl.h>
-#include <sys/wait.h>
-
-#define pr_err(fmt, ...) \
-               ({ \
-                       fprintf(stderr, "%s:%d:" fmt ": %m\n", \
-                               __func__, __LINE__, ##__VA_ARGS__); \
-                       1; \
-               })
-
-#define NSIO   0xb7
-#define NS_GET_USERNS   _IO(NSIO, 0x1)
-#define NS_GET_PARENT   _IO(NSIO, 0x2)
-
-#define __stack_aligned__      __attribute__((aligned(16)))
-struct cr_clone_arg {
-       char stack[128] __stack_aligned__;
-       char stack_ptr[];
-};
-
-static int child(void *args)
-{
-       prctl(PR_SET_PDEATHSIG, SIGKILL);
-       while (1)
-               sleep(1);
-       exit(0);
-}
-
-int main(int argc, char *argv[])
-{
-       char *ns_strs[] = {"pid", "user"};
-       char path[] = "/proc/0123456789/ns/pid";
-       struct cr_clone_arg ca;
-       struct stat st1, st2;
-       int ns, pns, i;
-       pid_t pid;
-
-       pid = clone(child, ca.stack_ptr, CLONE_NEWUSER | CLONE_NEWPID | SIGCHLD, NULL);
-       if (pid < 0)
-               return pr_err("clone");
-
-       for (i = 0; i < 2; i++) {
-               snprintf(path, sizeof(path), "/proc/%d/ns/%s", pid, ns_strs[i]);
-               ns = open(path, O_RDONLY);
-               if (ns < 0)
-                       return pr_err("Unable to open %s", path);
-
-               pns = ioctl(ns, NS_GET_PARENT);
-               if (pns < 0)
-                       return pr_err("Unable to get a parent pidns");
-
-               snprintf(path, sizeof(path), "/proc/self/ns/%s", ns_strs[i]);
-               if (stat(path, &st2))
-                       return pr_err("Unable to stat %s", path);
-               if (fstat(pns, &st1))
-                       return pr_err("Unable to stat the parent pidns");
-               if (st1.st_ino != st2.st_ino)
-                       return pr_err("NS_GET_PARENT returned a wrong namespace");
-
-               if (ioctl(pns, NS_GET_PARENT) >= 0 || errno != EPERM)
-                       return pr_err("Don't get EPERM");
-       }
-
-       kill(pid, SIGKILL);
-       wait(NULL);
-       return 0;
-}