Re: [PATCH 5/5] selftests/filesystems: create setup_userns() helper

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Wed, May 7, 2025 at 10:43 PM Amir Goldstein <amir73il@xxxxxxxxx> wrote:
>
> Add helper to utils and use it in statmount userns tests.
>
> Signed-off-by: Amir Goldstein <amir73il@xxxxxxxxx>
> ---
>  .../filesystems/statmount/statmount_test_ns.c | 60 +----------------
>  tools/testing/selftests/filesystems/utils.c   | 65 +++++++++++++++++++
>  tools/testing/selftests/filesystems/utils.h   |  1 +
>  3 files changed, 68 insertions(+), 58 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..3c5bc2e33821 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;
>  }
> @@ -200,7 +144,7 @@ static void test_statmount_mnt_ns_id(void)
>                 return;
>         }
>
> -       ret = setup_namespace();
> +       ret = setup_userns();

FYI, this is a braino.
It should remain setup_namespace()

Pushed a branch to my github will all review fixes and a WIP
mount-notify-ns_test:

https://github.com/amir73il/linux/commits/fanotify_selftests/

Thanks,
Amir.





[Index of Archives]     [Linux Ext4 Filesystem]     [Union Filesystem]     [Filesystem Testing]     [Ceph Users]     [Ecryptfs]     [NTFS 3]     [AutoFS]     [Kernel Newbies]     [Share Photos]     [Security]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux Cachefs]     [Reiser Filesystem]     [Linux RAID]     [NTFS 3]     [Samba]     [Device Mapper]     [CEPH Development]

  Powered by Linux