diff options
| author | Amir Goldstein <[email protected]> | 2025-05-09 13:32:39 +0000 |
|---|---|---|
| committer | Christian Brauner <[email protected]> | 2025-05-12 09:40:13 +0000 |
| commit | 8199e6f7402ca2232de6f57b918d2b1fb9c224cb (patch) | |
| tree | 8805b8274ecfd6379237582d0b18c6f45b67077d /tools/testing/selftests/filesystems/statmount/statmount_test_ns.c | |
| parent | selftests/filesystems: create get_unique_mnt_id() helper (diff) | |
| download | kernel-8199e6f7402ca2232de6f57b918d2b1fb9c224cb.tar.gz kernel-8199e6f7402ca2232de6f57b918d2b1fb9c224cb.zip | |
selftests/filesystems: create setup_userns() helper
Add helper to utils.c and use it in statmount userns tests.
Reviewed-by: John Hubbard <[email protected]>
Signed-off-by: Amir Goldstein <[email protected]>
Link: https://lore.kernel.org/[email protected]
Reviewed-by: Christian Brauner <[email protected]>
Signed-off-by: Christian Brauner <[email protected]>
Diffstat (limited to 'tools/testing/selftests/filesystems/statmount/statmount_test_ns.c')
| -rw-r--r-- | tools/testing/selftests/filesystems/statmount/statmount_test_ns.c | 58 |
1 files changed, 1 insertions, 57 deletions
diff --git a/tools/testing/selftests/filesystems/statmount/statmount_test_ns.c b/tools/testing/selftests/filesystems/statmount/statmount_test_ns.c index 375a52101d08..605a3fa16bf7 100644 --- a/tools/testing/selftests/filesystems/statmount/statmount_test_ns.c +++ b/tools/testing/selftests/filesystems/statmount/statmount_test_ns.c @@ -79,66 +79,10 @@ static int get_mnt_ns_id(const char *mnt_ns, uint64_t *mnt_ns_id) return NSID_PASS; } -static int write_file(const char *path, const char *val) -{ - int fd = open(path, O_WRONLY); - size_t len = strlen(val); - int ret; - - if (fd == -1) { - ksft_print_msg("opening %s for write: %s\n", path, strerror(errno)); - return NSID_ERROR; - } - - ret = write(fd, val, len); - if (ret == -1) { - ksft_print_msg("writing to %s: %s\n", path, strerror(errno)); - return NSID_ERROR; - } - if (ret != len) { - ksft_print_msg("short write to %s\n", path); - return NSID_ERROR; - } - - ret = close(fd); - if (ret == -1) { - ksft_print_msg("closing %s\n", path); - return NSID_ERROR; - } - - return NSID_PASS; -} - static int setup_namespace(void) { - int ret; - char buf[32]; - uid_t uid = getuid(); - gid_t gid = getgid(); - - ret = unshare(CLONE_NEWNS|CLONE_NEWUSER|CLONE_NEWPID); - if (ret == -1) - ksft_exit_fail_msg("unsharing mountns and userns: %s\n", - strerror(errno)); - - sprintf(buf, "0 %d 1", uid); - ret = write_file("/proc/self/uid_map", buf); - if (ret != NSID_PASS) - return ret; - ret = write_file("/proc/self/setgroups", "deny"); - if (ret != NSID_PASS) - return ret; - sprintf(buf, "0 %d 1", gid); - ret = write_file("/proc/self/gid_map", buf); - if (ret != NSID_PASS) - return ret; - - ret = mount("", "/", NULL, MS_REC|MS_PRIVATE, NULL); - if (ret == -1) { - ksft_print_msg("making mount tree private: %s\n", - strerror(errno)); + if (setup_userns() != 0) return NSID_ERROR; - } return NSID_PASS; } |
