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

Configure Feed

Select the types of activity you want to include in your feed.

selftests: fix mntns iteration selftests

Now that we changed permission checking make sure that we reflect that
in the selftests.

Link: https://patch.msgid.link/20260226-work-visibility-fixes-v1-4-d2c2853313bd@kernel.org
Fixes: 9d87b1067382 ("selftests: add tests for mntns iteration")
Reviewed-by: Jeff Layton <jlayton@kernel.org>
Cc: stable@kernel.org # v6.14+
Signed-off-by: Christian Brauner <brauner@kernel.org>

+15 -10
+15 -10
tools/testing/selftests/filesystems/nsfs/iterate_mntns.c
··· 37 37 __u64 mnt_ns_id[MNT_NS_COUNT]; 38 38 }; 39 39 40 + static inline bool mntns_in_list(__u64 *mnt_ns_id, struct mnt_ns_info *info) 41 + { 42 + for (int i = 0; i < MNT_NS_COUNT; i++) { 43 + if (mnt_ns_id[i] == info->mnt_ns_id) 44 + return true; 45 + } 46 + return false; 47 + } 48 + 40 49 FIXTURE_SETUP(iterate_mount_namespaces) 41 50 { 42 51 for (int i = 0; i < MNT_NS_COUNT; i++) 43 52 self->fd_mnt_ns[i] = -EBADF; 44 - 45 - /* 46 - * Creating a new user namespace let's us guarantee that we only see 47 - * mount namespaces that we did actually create. 48 - */ 49 - ASSERT_EQ(unshare(CLONE_NEWUSER), 0); 50 53 51 54 for (int i = 0; i < MNT_NS_COUNT; i++) { 52 55 struct mnt_ns_info info = {}; ··· 78 75 fd_mnt_ns_cur = fcntl(self->fd_mnt_ns[0], F_DUPFD_CLOEXEC); 79 76 ASSERT_GE(fd_mnt_ns_cur, 0); 80 77 81 - for (;; count++) { 78 + for (;;) { 82 79 struct mnt_ns_info info = {}; 83 80 int fd_mnt_ns_next; 84 81 85 82 fd_mnt_ns_next = ioctl(fd_mnt_ns_cur, NS_MNT_GET_NEXT, &info); 86 83 if (fd_mnt_ns_next < 0 && errno == ENOENT) 87 84 break; 85 + if (mntns_in_list(self->mnt_ns_id, &info)) 86 + count++; 88 87 ASSERT_GE(fd_mnt_ns_next, 0); 89 88 ASSERT_EQ(close(fd_mnt_ns_cur), 0); 90 89 fd_mnt_ns_cur = fd_mnt_ns_next; ··· 101 96 fd_mnt_ns_cur = fcntl(self->fd_mnt_ns[MNT_NS_LAST_INDEX], F_DUPFD_CLOEXEC); 102 97 ASSERT_GE(fd_mnt_ns_cur, 0); 103 98 104 - for (;; count++) { 99 + for (;;) { 105 100 struct mnt_ns_info info = {}; 106 101 int fd_mnt_ns_prev; 107 102 108 103 fd_mnt_ns_prev = ioctl(fd_mnt_ns_cur, NS_MNT_GET_PREV, &info); 109 104 if (fd_mnt_ns_prev < 0 && errno == ENOENT) 110 105 break; 106 + if (mntns_in_list(self->mnt_ns_id, &info)) 107 + count++; 111 108 ASSERT_GE(fd_mnt_ns_prev, 0); 112 109 ASSERT_EQ(close(fd_mnt_ns_cur), 0); 113 110 fd_mnt_ns_cur = fd_mnt_ns_prev; ··· 132 125 ASSERT_GE(fd_mnt_ns_next, 0); 133 126 ASSERT_EQ(close(fd_mnt_ns_cur), 0); 134 127 fd_mnt_ns_cur = fd_mnt_ns_next; 135 - ASSERT_EQ(info.mnt_ns_id, self->mnt_ns_id[i]); 136 128 } 137 129 } 138 130 ··· 150 144 ASSERT_GE(fd_mnt_ns_prev, 0); 151 145 ASSERT_EQ(close(fd_mnt_ns_cur), 0); 152 146 fd_mnt_ns_cur = fd_mnt_ns_prev; 153 - ASSERT_EQ(info.mnt_ns_id, self->mnt_ns_id[i]); 154 147 } 155 148 } 156 149