Lines Matching refs:self
98 self->nsfds[i] = -EBADF; in FIXTURE_SETUP()
99 self->child_nsfds1[i] = -EBADF; in FIXTURE_SETUP()
100 self->child_nsfds2[i] = -EBADF; in FIXTURE_SETUP()
101 self->child_pidfd_derived_nsfds[i] = -EBADF; in FIXTURE_SETUP()
102 self->child_pidfd_derived_nsfds1[i] = -EBADF; in FIXTURE_SETUP()
103 self->child_pidfd_derived_nsfds2[i] = -EBADF; in FIXTURE_SETUP()
111 self->pid = getpid(); in FIXTURE_SETUP()
112 self->pidfd = sys_pidfd_open(self->pid, 0); in FIXTURE_SETUP()
113 EXPECT_GT(self->pidfd, 0) { in FIXTURE_SETUP()
114 TH_LOG("%m - Failed to open pidfd for process %d", self->pid); in FIXTURE_SETUP()
119 self->nsfds[i] = openat(proc_fd, info->name, O_RDONLY | O_CLOEXEC); in FIXTURE_SETUP()
120 if (self->nsfds[i] < 0) { in FIXTURE_SETUP()
123 info->name, self->pid); in FIXTURE_SETUP()
127 self->child_pidfd_derived_nsfds[i] = ioctl(self->pidfd, info->pidfd_ioctl, 0); in FIXTURE_SETUP()
128 if (self->child_pidfd_derived_nsfds[i] < 0) { in FIXTURE_SETUP()
131 info->name, self->pid); in FIXTURE_SETUP()
137 self->child_pid_exited = create_child(&self->child_pidfd_exited, 0); in FIXTURE_SETUP()
138 EXPECT_GE(self->child_pid_exited, 0); in FIXTURE_SETUP()
140 if (self->child_pid_exited == 0) { in FIXTURE_SETUP()
141 if (self->nsfds[PIDFD_NS_USER] >= 0 && unshare(CLONE_NEWUSER) < 0) in FIXTURE_SETUP()
143 if (self->nsfds[PIDFD_NS_NET] >= 0 && unshare(CLONE_NEWNET) < 0) in FIXTURE_SETUP()
148 ASSERT_EQ(sys_waitid(P_PID, self->child_pid_exited, NULL, WEXITED | WNOWAIT), 0); in FIXTURE_SETUP()
150 self->pidfd = sys_pidfd_open(self->pid, 0); in FIXTURE_SETUP()
151 EXPECT_GE(self->pidfd, 0) { in FIXTURE_SETUP()
152 TH_LOG("%m - Failed to open pidfd for process %d", self->pid); in FIXTURE_SETUP()
159 if (self->nsfds[PIDFD_NS_USER] >= 0 && self->nsfds[PIDFD_NS_PID] >= 0) in FIXTURE_SETUP()
160 self->child_pid1 = create_child(&self->child_pidfd1, CLONE_NEWUSER | CLONE_NEWPID); in FIXTURE_SETUP()
161 else if (self->nsfds[PIDFD_NS_PID] >= 0) in FIXTURE_SETUP()
162 self->child_pid1 = create_child(&self->child_pidfd1, CLONE_NEWPID); in FIXTURE_SETUP()
163 else if (self->nsfds[PIDFD_NS_USER] >= 0) in FIXTURE_SETUP()
164 self->child_pid1 = create_child(&self->child_pidfd1, CLONE_NEWUSER); in FIXTURE_SETUP()
166 self->child_pid1 = create_child(&self->child_pidfd1, 0); in FIXTURE_SETUP()
167 EXPECT_GE(self->child_pid1, 0); in FIXTURE_SETUP()
169 if (self->child_pid1 == 0) { in FIXTURE_SETUP()
172 if (self->nsfds[PIDFD_NS_MNT] >= 0 && unshare(CLONE_NEWNS) < 0) { in FIXTURE_SETUP()
173 TH_LOG("%m - Failed to unshare mount namespace for process %d", self->pid); in FIXTURE_SETUP()
176 if (self->nsfds[PIDFD_NS_CGROUP] >= 0 && unshare(CLONE_NEWCGROUP) < 0) { in FIXTURE_SETUP()
177 TH_LOG("%m - Failed to unshare cgroup namespace for process %d", self->pid); in FIXTURE_SETUP()
180 if (self->nsfds[PIDFD_NS_IPC] >= 0 && unshare(CLONE_NEWIPC) < 0) { in FIXTURE_SETUP()
181 TH_LOG("%m - Failed to unshare ipc namespace for process %d", self->pid); in FIXTURE_SETUP()
184 if (self->nsfds[PIDFD_NS_UTS] >= 0 && unshare(CLONE_NEWUTS) < 0) { in FIXTURE_SETUP()
185 TH_LOG("%m - Failed to unshare uts namespace for process %d", self->pid); in FIXTURE_SETUP()
188 if (self->nsfds[PIDFD_NS_NET] >= 0 && unshare(CLONE_NEWNET) < 0) { in FIXTURE_SETUP()
189 TH_LOG("%m - Failed to unshare net namespace for process %d", self->pid); in FIXTURE_SETUP()
192 if (self->nsfds[PIDFD_NS_TIME] >= 0 && !switch_timens()) { in FIXTURE_SETUP()
193 TH_LOG("%m - Failed to unshare time namespace for process %d", self->pid); in FIXTURE_SETUP()
213 if (self->nsfds[PIDFD_NS_USER] >= 0 && self->nsfds[PIDFD_NS_PID] >= 0) in FIXTURE_SETUP()
214 self->child_pid2 = create_child(&self->child_pidfd2, CLONE_NEWUSER | CLONE_NEWPID); in FIXTURE_SETUP()
215 else if (self->nsfds[PIDFD_NS_PID] >= 0) in FIXTURE_SETUP()
216 self->child_pid2 = create_child(&self->child_pidfd2, CLONE_NEWPID); in FIXTURE_SETUP()
217 else if (self->nsfds[PIDFD_NS_USER] >= 0) in FIXTURE_SETUP()
218 self->child_pid2 = create_child(&self->child_pidfd2, CLONE_NEWUSER); in FIXTURE_SETUP()
220 self->child_pid2 = create_child(&self->child_pidfd2, 0); in FIXTURE_SETUP()
221 EXPECT_GE(self->child_pid2, 0); in FIXTURE_SETUP()
223 if (self->child_pid2 == 0) { in FIXTURE_SETUP()
226 if (self->nsfds[PIDFD_NS_MNT] >= 0 && unshare(CLONE_NEWNS) < 0) { in FIXTURE_SETUP()
227 TH_LOG("%m - Failed to unshare mount namespace for process %d", self->pid); in FIXTURE_SETUP()
230 if (self->nsfds[PIDFD_NS_CGROUP] >= 0 && unshare(CLONE_NEWCGROUP) < 0) { in FIXTURE_SETUP()
231 TH_LOG("%m - Failed to unshare cgroup namespace for process %d", self->pid); in FIXTURE_SETUP()
234 if (self->nsfds[PIDFD_NS_IPC] >= 0 && unshare(CLONE_NEWIPC) < 0) { in FIXTURE_SETUP()
235 TH_LOG("%m - Failed to unshare ipc namespace for process %d", self->pid); in FIXTURE_SETUP()
238 if (self->nsfds[PIDFD_NS_UTS] >= 0 && unshare(CLONE_NEWUTS) < 0) { in FIXTURE_SETUP()
239 TH_LOG("%m - Failed to unshare uts namespace for process %d", self->pid); in FIXTURE_SETUP()
242 if (self->nsfds[PIDFD_NS_NET] >= 0 && unshare(CLONE_NEWNET) < 0) { in FIXTURE_SETUP()
243 TH_LOG("%m - Failed to unshare net namespace for process %d", self->pid); in FIXTURE_SETUP()
246 if (self->nsfds[PIDFD_NS_TIME] >= 0 && !switch_timens()) { in FIXTURE_SETUP()
247 TH_LOG("%m - Failed to unshare time namespace for process %d", self->pid); in FIXTURE_SETUP()
269 self->nsfds[i] = openat(proc_fd, info->name, O_RDONLY | O_CLOEXEC); in FIXTURE_SETUP()
270 if (self->nsfds[i] < 0) { in FIXTURE_SETUP()
273 info->name, self->pid); in FIXTURE_SETUP()
278 self->child_pid1, info->name); in FIXTURE_SETUP()
282 self->child_nsfds1[i] = open(p, O_RDONLY | O_CLOEXEC); in FIXTURE_SETUP()
283 if (self->child_nsfds1[i] < 0) { in FIXTURE_SETUP()
286 info->name, self->child_pid1); in FIXTURE_SETUP()
291 self->child_pid2, info->name); in FIXTURE_SETUP()
295 self->child_nsfds2[i] = open(p, O_RDONLY | O_CLOEXEC); in FIXTURE_SETUP()
296 if (self->child_nsfds2[i] < 0) { in FIXTURE_SETUP()
299 info->name, self->child_pid1); in FIXTURE_SETUP()
303 self->child_pidfd_derived_nsfds1[i] = ioctl(self->child_pidfd1, info->pidfd_ioctl, 0); in FIXTURE_SETUP()
304 if (self->child_pidfd_derived_nsfds1[i] < 0) { in FIXTURE_SETUP()
307 info->name, self->child_pid1); in FIXTURE_SETUP()
311 self->child_pidfd_derived_nsfds2[i] = ioctl(self->child_pidfd2, info->pidfd_ioctl, 0); in FIXTURE_SETUP()
312 if (self->child_pidfd_derived_nsfds2[i] < 0) { in FIXTURE_SETUP()
315 info->name, self->child_pid2); in FIXTURE_SETUP()
327 ASSERT_EQ(sys_pidfd_send_signal(self->child_pidfd1, in FIXTURE_TEARDOWN()
329 ASSERT_EQ(sys_pidfd_send_signal(self->child_pidfd2, in FIXTURE_TEARDOWN()
333 if (self->nsfds[i] >= 0) in FIXTURE_TEARDOWN()
334 close(self->nsfds[i]); in FIXTURE_TEARDOWN()
335 if (self->child_nsfds1[i] >= 0) in FIXTURE_TEARDOWN()
336 close(self->child_nsfds1[i]); in FIXTURE_TEARDOWN()
337 if (self->child_nsfds2[i] >= 0) in FIXTURE_TEARDOWN()
338 close(self->child_nsfds2[i]); in FIXTURE_TEARDOWN()
339 if (self->child_pidfd_derived_nsfds[i] >= 0) in FIXTURE_TEARDOWN()
340 close(self->child_pidfd_derived_nsfds[i]); in FIXTURE_TEARDOWN()
341 if (self->child_pidfd_derived_nsfds1[i] >= 0) in FIXTURE_TEARDOWN()
342 close(self->child_pidfd_derived_nsfds1[i]); in FIXTURE_TEARDOWN()
343 if (self->child_pidfd_derived_nsfds2[i] >= 0) in FIXTURE_TEARDOWN()
344 close(self->child_pidfd_derived_nsfds2[i]); in FIXTURE_TEARDOWN()
347 if (self->child_pidfd1 >= 0) in FIXTURE_TEARDOWN()
348 EXPECT_EQ(0, close(self->child_pidfd1)); in FIXTURE_TEARDOWN()
349 if (self->child_pidfd2 >= 0) in FIXTURE_TEARDOWN()
350 EXPECT_EQ(0, close(self->child_pidfd2)); in FIXTURE_TEARDOWN()
351 ASSERT_EQ(sys_waitid(P_PID, self->child_pid_exited, NULL, WEXITED), 0); in FIXTURE_TEARDOWN()
352 ASSERT_EQ(sys_waitid(P_PID, self->child_pid1, NULL, WEXITED), 0); in FIXTURE_TEARDOWN()
353 ASSERT_EQ(sys_waitid(P_PID, self->child_pid2, NULL, WEXITED), 0); in FIXTURE_TEARDOWN()
399 ASSERT_NE(setns(self->pidfd, 0), 0); in TEST_F()
402 ASSERT_NE(setns(self->pidfd, -1), 0); in TEST_F()
405 ASSERT_NE(setns(self->pidfd, CLONE_VM), 0); in TEST_F()
408 ASSERT_NE(setns(self->pidfd, CLONE_NEWUSER | CLONE_VM), 0); in TEST_F()
418 ASSERT_NE(setns(self->child_pidfd_exited, CLONE_NEWUSER | CLONE_NEWNET), in TEST_F()
426 if (self->nsfds[i] >= 0) in TEST_F()
427 ASSERT_EQ(in_same_namespace(self->nsfds[i], pid, info->name), 1); in TEST_F()
441 if (self->child_nsfds1[i] < 0) in TEST_F()
445 ASSERT_EQ(setns(self->child_pidfd1, info->flag), 0) { in TEST_F()
447 info->name, self->child_pid1, in TEST_F()
448 self->child_pidfd1); in TEST_F()
454 nsfd = self->nsfds[i]; in TEST_F()
456 nsfd = self->child_nsfds1[i]; in TEST_F()
459 info->name, self->child_pid1, in TEST_F()
460 self->child_pidfd1); in TEST_F()
463 info->name, self->child_pid1, self->child_pidfd1); in TEST_F()
477 if (self->child_nsfds1[i] < 0) in TEST_F()
481 ASSERT_EQ(setns(self->child_nsfds1[i], info->flag), 0) { in TEST_F()
483 info->name, self->child_pid1, in TEST_F()
484 self->child_nsfds1[i]); in TEST_F()
490 nsfd = self->nsfds[i]; in TEST_F()
492 nsfd = self->child_nsfds1[i]; in TEST_F()
495 info->name, self->child_pid1, in TEST_F()
496 self->child_nsfds1[i]); in TEST_F()
499 info->name, self->child_pid1, self->child_nsfds1[i]); in TEST_F()
513 if (self->child_pidfd_derived_nsfds1[i] < 0) in TEST_F()
517 ASSERT_EQ(setns(self->child_pidfd_derived_nsfds1[i], info->flag), 0) { in TEST_F()
519 info->name, self->child_pid1, in TEST_F()
520 self->child_pidfd_derived_nsfds1[i]); in TEST_F()
526 nsfd = self->child_pidfd_derived_nsfds[i]; in TEST_F()
528 nsfd = self->child_pidfd_derived_nsfds1[i]; in TEST_F()
531 info->name, self->child_pid1, in TEST_F()
532 self->child_pidfd_derived_nsfds1[i]); in TEST_F()
535 info->name, self->child_pid1, self->child_pidfd_derived_nsfds1[i]); in TEST_F()
548 if (self->child_nsfds1[i] < 0) in TEST_F()
553 info->name, self->child_pid1); in TEST_F()
556 ASSERT_EQ(setns(self->child_pidfd1, flags), 0) { in TEST_F()
558 self->child_pid1); in TEST_F()
566 if (self->child_nsfds1[i] < 0) in TEST_F()
571 nsfd = self->nsfds[i]; in TEST_F()
573 nsfd = self->child_nsfds1[i]; in TEST_F()
576 info->name, self->child_pid1); in TEST_F()
579 info->name, self->child_pid1); in TEST_F()
591 if (self->child_nsfds1[i] < 0) in TEST_F()
597 info->name, self->child_pid1); in TEST_F()
600 ASSERT_EQ(setns(self->child_pidfd1, flags), 0) { in TEST_F()
602 self->child_pid1, self->child_pidfd1); in TEST_F()
614 if (self->child_nsfds2[i] < 0 || !info->flag) in TEST_F()
617 ASSERT_NE(setns(self->child_pidfd2, info->flag), 0) { in TEST_F()
619 info->name, self->child_pid2, in TEST_F()
620 self->child_pidfd2); in TEST_F()
623 info->name, self->child_pid2, in TEST_F()
624 self->child_pidfd2); in TEST_F()
626 ASSERT_NE(setns(self->child_nsfds2[i], info->flag), 0) { in TEST_F()
628 info->name, self->child_pid2, in TEST_F()
629 self->child_nsfds2[i]); in TEST_F()
632 info->name, self->child_pid2, in TEST_F()
633 self->child_nsfds2[i]); in TEST_F()
645 if (self->child_pidfd_derived_nsfds2[i] < 0 || !info->flag) in TEST_F()
648 ASSERT_NE(setns(self->child_pidfd_derived_nsfds2[i], info->flag), 0) { in TEST_F()
650 info->name, self->child_pid2, in TEST_F()
651 self->child_pidfd_derived_nsfds2[i]); in TEST_F()
654 info->name, self->child_pid2, in TEST_F()
655 self->child_pidfd_derived_nsfds2[i]); in TEST_F()