@@ -37,17 +37,20 @@ FIXTURE(iterate_mount_namespaces) {
3737 __u64 mnt_ns_id [MNT_NS_COUNT ];
3838};
3939
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+
4049FIXTURE_SETUP (iterate_mount_namespaces )
4150{
4251 for (int i = 0 ; i < MNT_NS_COUNT ; i ++ )
4352 self -> fd_mnt_ns [i ] = - EBADF ;
4453
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-
5154 for (int i = 0 ; i < MNT_NS_COUNT ; i ++ ) {
5255 struct mnt_ns_info info = {};
5356
@@ -75,13 +78,15 @@ TEST_F(iterate_mount_namespaces, iterate_all_forward)
7578 fd_mnt_ns_cur = fcntl (self -> fd_mnt_ns [0 ], F_DUPFD_CLOEXEC );
7679 ASSERT_GE (fd_mnt_ns_cur , 0 );
7780
78- for (;; count ++ ) {
81+ for (;;) {
7982 struct mnt_ns_info info = {};
8083 int fd_mnt_ns_next ;
8184
8285 fd_mnt_ns_next = ioctl (fd_mnt_ns_cur , NS_MNT_GET_NEXT , & info );
8386 if (fd_mnt_ns_next < 0 && errno == ENOENT )
8487 break ;
88+ if (mntns_in_list (self -> mnt_ns_id , & info ))
89+ count ++ ;
8590 ASSERT_GE (fd_mnt_ns_next , 0 );
8691 ASSERT_EQ (close (fd_mnt_ns_cur ), 0 );
8792 fd_mnt_ns_cur = fd_mnt_ns_next ;
@@ -96,13 +101,15 @@ TEST_F(iterate_mount_namespaces, iterate_all_backwards)
96101 fd_mnt_ns_cur = fcntl (self -> fd_mnt_ns [MNT_NS_LAST_INDEX ], F_DUPFD_CLOEXEC );
97102 ASSERT_GE (fd_mnt_ns_cur , 0 );
98103
99- for (;; count ++ ) {
104+ for (;;) {
100105 struct mnt_ns_info info = {};
101106 int fd_mnt_ns_prev ;
102107
103108 fd_mnt_ns_prev = ioctl (fd_mnt_ns_cur , NS_MNT_GET_PREV , & info );
104109 if (fd_mnt_ns_prev < 0 && errno == ENOENT )
105110 break ;
111+ if (mntns_in_list (self -> mnt_ns_id , & info ))
112+ count ++ ;
106113 ASSERT_GE (fd_mnt_ns_prev , 0 );
107114 ASSERT_EQ (close (fd_mnt_ns_cur ), 0 );
108115 fd_mnt_ns_cur = fd_mnt_ns_prev ;
@@ -125,7 +132,6 @@ TEST_F(iterate_mount_namespaces, iterate_forward)
125132 ASSERT_GE (fd_mnt_ns_next , 0 );
126133 ASSERT_EQ (close (fd_mnt_ns_cur ), 0 );
127134 fd_mnt_ns_cur = fd_mnt_ns_next ;
128- ASSERT_EQ (info .mnt_ns_id , self -> mnt_ns_id [i ]);
129135 }
130136}
131137
@@ -144,7 +150,6 @@ TEST_F(iterate_mount_namespaces, iterate_backward)
144150 ASSERT_GE (fd_mnt_ns_prev , 0 );
145151 ASSERT_EQ (close (fd_mnt_ns_cur ), 0 );
146152 fd_mnt_ns_cur = fd_mnt_ns_prev ;
147- ASSERT_EQ (info .mnt_ns_id , self -> mnt_ns_id [i ]);
148153 }
149154}
150155
0 commit comments