Lines Matching refs:self

182 		self->nsfds[i]				= -EBADF;  in FIXTURE_SETUP()
183 self->child_nsfds1[i] = -EBADF; in FIXTURE_SETUP()
184 self->child_nsfds2[i] = -EBADF; in FIXTURE_SETUP()
185 self->child_pidfd_derived_nsfds[i] = -EBADF; in FIXTURE_SETUP()
186 self->child_pidfd_derived_nsfds1[i] = -EBADF; in FIXTURE_SETUP()
187 self->child_pidfd_derived_nsfds2[i] = -EBADF; in FIXTURE_SETUP()
195 self->pid = getpid(); in FIXTURE_SETUP()
196 self->pidfd = sys_pidfd_open(self->pid, 0); in FIXTURE_SETUP()
197 EXPECT_GT(self->pidfd, 0) { in FIXTURE_SETUP()
198 TH_LOG("%m - Failed to open pidfd for process %d", self->pid); in FIXTURE_SETUP()
203 self->nsfds[i] = openat(proc_fd, info->name, O_RDONLY | O_CLOEXEC); in FIXTURE_SETUP()
204 if (self->nsfds[i] < 0) { in FIXTURE_SETUP()
207 info->name, self->pid); in FIXTURE_SETUP()
211 self->child_pidfd_derived_nsfds[i] = ioctl(self->pidfd, info->pidfd_ioctl, 0); in FIXTURE_SETUP()
212 if (self->child_pidfd_derived_nsfds[i] < 0) { in FIXTURE_SETUP()
215 info->name, self->pid); in FIXTURE_SETUP()
221 self->child_pid_exited = create_child(&self->child_pidfd_exited, 0); in FIXTURE_SETUP()
222 EXPECT_GE(self->child_pid_exited, 0); in FIXTURE_SETUP()
224 if (self->child_pid_exited == 0) { in FIXTURE_SETUP()
225 if (self->nsfds[PIDFD_NS_USER] >= 0 && unshare(CLONE_NEWUSER) < 0) in FIXTURE_SETUP()
227 if (self->nsfds[PIDFD_NS_NET] >= 0 && unshare(CLONE_NEWNET) < 0) in FIXTURE_SETUP()
232 ASSERT_EQ(sys_waitid(P_PID, self->child_pid_exited, WEXITED | WNOWAIT), 0); in FIXTURE_SETUP()
234 self->pidfd = sys_pidfd_open(self->pid, 0); in FIXTURE_SETUP()
235 EXPECT_GE(self->pidfd, 0) { in FIXTURE_SETUP()
236 TH_LOG("%m - Failed to open pidfd for process %d", self->pid); in FIXTURE_SETUP()
243 if (self->nsfds[PIDFD_NS_USER] >= 0 && self->nsfds[PIDFD_NS_PID] >= 0) in FIXTURE_SETUP()
244 self->child_pid1 = create_child(&self->child_pidfd1, CLONE_NEWUSER | CLONE_NEWPID); in FIXTURE_SETUP()
245 else if (self->nsfds[PIDFD_NS_PID] >= 0) in FIXTURE_SETUP()
246 self->child_pid1 = create_child(&self->child_pidfd1, CLONE_NEWPID); in FIXTURE_SETUP()
247 else if (self->nsfds[PIDFD_NS_USER] >= 0) in FIXTURE_SETUP()
248 self->child_pid1 = create_child(&self->child_pidfd1, CLONE_NEWUSER); in FIXTURE_SETUP()
250 self->child_pid1 = create_child(&self->child_pidfd1, 0); in FIXTURE_SETUP()
251 EXPECT_GE(self->child_pid1, 0); in FIXTURE_SETUP()
253 if (self->child_pid1 == 0) { in FIXTURE_SETUP()
256 if (self->nsfds[PIDFD_NS_MNT] >= 0 && unshare(CLONE_NEWNS) < 0) { in FIXTURE_SETUP()
257 TH_LOG("%m - Failed to unshare mount namespace for process %d", self->pid); in FIXTURE_SETUP()
260 if (self->nsfds[PIDFD_NS_CGROUP] >= 0 && unshare(CLONE_NEWCGROUP) < 0) { in FIXTURE_SETUP()
261 TH_LOG("%m - Failed to unshare cgroup namespace for process %d", self->pid); in FIXTURE_SETUP()
264 if (self->nsfds[PIDFD_NS_IPC] >= 0 && unshare(CLONE_NEWIPC) < 0) { in FIXTURE_SETUP()
265 TH_LOG("%m - Failed to unshare ipc namespace for process %d", self->pid); in FIXTURE_SETUP()
268 if (self->nsfds[PIDFD_NS_UTS] >= 0 && unshare(CLONE_NEWUTS) < 0) { in FIXTURE_SETUP()
269 TH_LOG("%m - Failed to unshare uts namespace for process %d", self->pid); in FIXTURE_SETUP()
272 if (self->nsfds[PIDFD_NS_NET] >= 0 && unshare(CLONE_NEWNET) < 0) { in FIXTURE_SETUP()
273 TH_LOG("%m - Failed to unshare net namespace for process %d", self->pid); in FIXTURE_SETUP()
276 if (self->nsfds[PIDFD_NS_TIME] >= 0 && !switch_timens()) { in FIXTURE_SETUP()
277 TH_LOG("%m - Failed to unshare time namespace for process %d", self->pid); in FIXTURE_SETUP()
297 if (self->nsfds[PIDFD_NS_USER] >= 0 && self->nsfds[PIDFD_NS_PID] >= 0) in FIXTURE_SETUP()
298 self->child_pid2 = create_child(&self->child_pidfd2, CLONE_NEWUSER | CLONE_NEWPID); in FIXTURE_SETUP()
299 else if (self->nsfds[PIDFD_NS_PID] >= 0) in FIXTURE_SETUP()
300 self->child_pid2 = create_child(&self->child_pidfd2, CLONE_NEWPID); in FIXTURE_SETUP()
301 else if (self->nsfds[PIDFD_NS_USER] >= 0) in FIXTURE_SETUP()
302 self->child_pid2 = create_child(&self->child_pidfd2, CLONE_NEWUSER); in FIXTURE_SETUP()
304 self->child_pid2 = create_child(&self->child_pidfd2, 0); in FIXTURE_SETUP()
305 EXPECT_GE(self->child_pid2, 0); in FIXTURE_SETUP()
307 if (self->child_pid2 == 0) { in FIXTURE_SETUP()
310 if (self->nsfds[PIDFD_NS_MNT] >= 0 && unshare(CLONE_NEWNS) < 0) { in FIXTURE_SETUP()
311 TH_LOG("%m - Failed to unshare mount namespace for process %d", self->pid); in FIXTURE_SETUP()
314 if (self->nsfds[PIDFD_NS_CGROUP] >= 0 && unshare(CLONE_NEWCGROUP) < 0) { in FIXTURE_SETUP()
315 TH_LOG("%m - Failed to unshare cgroup namespace for process %d", self->pid); in FIXTURE_SETUP()
318 if (self->nsfds[PIDFD_NS_IPC] >= 0 && unshare(CLONE_NEWIPC) < 0) { in FIXTURE_SETUP()
319 TH_LOG("%m - Failed to unshare ipc namespace for process %d", self->pid); in FIXTURE_SETUP()
322 if (self->nsfds[PIDFD_NS_UTS] >= 0 && unshare(CLONE_NEWUTS) < 0) { in FIXTURE_SETUP()
323 TH_LOG("%m - Failed to unshare uts namespace for process %d", self->pid); in FIXTURE_SETUP()
326 if (self->nsfds[PIDFD_NS_NET] >= 0 && unshare(CLONE_NEWNET) < 0) { in FIXTURE_SETUP()
327 TH_LOG("%m - Failed to unshare net namespace for process %d", self->pid); in FIXTURE_SETUP()
330 if (self->nsfds[PIDFD_NS_TIME] >= 0 && !switch_timens()) { in FIXTURE_SETUP()
331 TH_LOG("%m - Failed to unshare time namespace for process %d", self->pid); in FIXTURE_SETUP()
353 self->nsfds[i] = openat(proc_fd, info->name, O_RDONLY | O_CLOEXEC); in FIXTURE_SETUP()
354 if (self->nsfds[i] < 0) { in FIXTURE_SETUP()
357 info->name, self->pid); in FIXTURE_SETUP()
362 self->child_pid1, info->name); in FIXTURE_SETUP()
366 self->child_nsfds1[i] = open(p, O_RDONLY | O_CLOEXEC); in FIXTURE_SETUP()
367 if (self->child_nsfds1[i] < 0) { in FIXTURE_SETUP()
370 info->name, self->child_pid1); in FIXTURE_SETUP()
375 self->child_pid2, info->name); in FIXTURE_SETUP()
379 self->child_nsfds2[i] = open(p, O_RDONLY | O_CLOEXEC); in FIXTURE_SETUP()
380 if (self->child_nsfds2[i] < 0) { in FIXTURE_SETUP()
383 info->name, self->child_pid1); in FIXTURE_SETUP()
387 self->child_pidfd_derived_nsfds1[i] = ioctl(self->child_pidfd1, info->pidfd_ioctl, 0); in FIXTURE_SETUP()
388 if (self->child_pidfd_derived_nsfds1[i] < 0) { in FIXTURE_SETUP()
391 info->name, self->child_pid1); in FIXTURE_SETUP()
395 self->child_pidfd_derived_nsfds2[i] = ioctl(self->child_pidfd2, info->pidfd_ioctl, 0); in FIXTURE_SETUP()
396 if (self->child_pidfd_derived_nsfds2[i] < 0) { in FIXTURE_SETUP()
399 info->name, self->child_pid2); in FIXTURE_SETUP()
411 ASSERT_EQ(sys_pidfd_send_signal(self->child_pidfd1, in FIXTURE_TEARDOWN()
413 ASSERT_EQ(sys_pidfd_send_signal(self->child_pidfd2, in FIXTURE_TEARDOWN()
417 if (self->nsfds[i] >= 0) in FIXTURE_TEARDOWN()
418 close(self->nsfds[i]); in FIXTURE_TEARDOWN()
419 if (self->child_nsfds1[i] >= 0) in FIXTURE_TEARDOWN()
420 close(self->child_nsfds1[i]); in FIXTURE_TEARDOWN()
421 if (self->child_nsfds2[i] >= 0) in FIXTURE_TEARDOWN()
422 close(self->child_nsfds2[i]); in FIXTURE_TEARDOWN()
423 if (self->child_pidfd_derived_nsfds[i] >= 0) in FIXTURE_TEARDOWN()
424 close(self->child_pidfd_derived_nsfds[i]); in FIXTURE_TEARDOWN()
425 if (self->child_pidfd_derived_nsfds1[i] >= 0) in FIXTURE_TEARDOWN()
426 close(self->child_pidfd_derived_nsfds1[i]); in FIXTURE_TEARDOWN()
427 if (self->child_pidfd_derived_nsfds2[i] >= 0) in FIXTURE_TEARDOWN()
428 close(self->child_pidfd_derived_nsfds2[i]); in FIXTURE_TEARDOWN()
431 if (self->child_pidfd1 >= 0) in FIXTURE_TEARDOWN()
432 EXPECT_EQ(0, close(self->child_pidfd1)); in FIXTURE_TEARDOWN()
433 if (self->child_pidfd2 >= 0) in FIXTURE_TEARDOWN()
434 EXPECT_EQ(0, close(self->child_pidfd2)); in FIXTURE_TEARDOWN()
435 ASSERT_EQ(sys_waitid(P_PID, self->child_pid_exited, WEXITED), 0); in FIXTURE_TEARDOWN()
436 ASSERT_EQ(sys_waitid(P_PID, self->child_pid1, WEXITED), 0); in FIXTURE_TEARDOWN()
437 ASSERT_EQ(sys_waitid(P_PID, self->child_pid2, WEXITED), 0); in FIXTURE_TEARDOWN()
483 ASSERT_NE(setns(self->pidfd, 0), 0); in TEST_F()
486 ASSERT_NE(setns(self->pidfd, -1), 0); in TEST_F()
489 ASSERT_NE(setns(self->pidfd, CLONE_VM), 0); in TEST_F()
492 ASSERT_NE(setns(self->pidfd, CLONE_NEWUSER | CLONE_VM), 0); in TEST_F()
502 ASSERT_NE(setns(self->child_pidfd_exited, CLONE_NEWUSER | CLONE_NEWNET), in TEST_F()
510 if (self->nsfds[i] >= 0) in TEST_F()
511 ASSERT_EQ(in_same_namespace(self->nsfds[i], pid, info->name), 1); in TEST_F()
525 if (self->child_nsfds1[i] < 0) in TEST_F()
529 ASSERT_EQ(setns(self->child_pidfd1, info->flag), 0) { in TEST_F()
531 info->name, self->child_pid1, in TEST_F()
532 self->child_pidfd1); in TEST_F()
538 nsfd = self->nsfds[i]; in TEST_F()
540 nsfd = self->child_nsfds1[i]; in TEST_F()
543 info->name, self->child_pid1, in TEST_F()
544 self->child_pidfd1); in TEST_F()
547 info->name, self->child_pid1, self->child_pidfd1); in TEST_F()
561 if (self->child_nsfds1[i] < 0) in TEST_F()
565 ASSERT_EQ(setns(self->child_nsfds1[i], info->flag), 0) { in TEST_F()
567 info->name, self->child_pid1, in TEST_F()
568 self->child_nsfds1[i]); in TEST_F()
574 nsfd = self->nsfds[i]; in TEST_F()
576 nsfd = self->child_nsfds1[i]; in TEST_F()
579 info->name, self->child_pid1, in TEST_F()
580 self->child_nsfds1[i]); in TEST_F()
583 info->name, self->child_pid1, self->child_nsfds1[i]); in TEST_F()
597 if (self->child_pidfd_derived_nsfds1[i] < 0) in TEST_F()
601 ASSERT_EQ(setns(self->child_pidfd_derived_nsfds1[i], info->flag), 0) { in TEST_F()
603 info->name, self->child_pid1, in TEST_F()
604 self->child_pidfd_derived_nsfds1[i]); in TEST_F()
610 nsfd = self->child_pidfd_derived_nsfds[i]; in TEST_F()
612 nsfd = self->child_pidfd_derived_nsfds1[i]; in TEST_F()
615 info->name, self->child_pid1, in TEST_F()
616 self->child_pidfd_derived_nsfds1[i]); in TEST_F()
619 info->name, self->child_pid1, self->child_pidfd_derived_nsfds1[i]); in TEST_F()
632 if (self->child_nsfds1[i] < 0) in TEST_F()
637 info->name, self->child_pid1); in TEST_F()
640 ASSERT_EQ(setns(self->child_pidfd1, flags), 0) { in TEST_F()
642 self->child_pid1); in TEST_F()
650 if (self->child_nsfds1[i] < 0) in TEST_F()
655 nsfd = self->nsfds[i]; in TEST_F()
657 nsfd = self->child_nsfds1[i]; in TEST_F()
660 info->name, self->child_pid1); in TEST_F()
663 info->name, self->child_pid1); in TEST_F()
675 if (self->child_nsfds1[i] < 0) in TEST_F()
681 info->name, self->child_pid1); in TEST_F()
684 ASSERT_EQ(setns(self->child_pidfd1, flags), 0) { in TEST_F()
686 self->child_pid1, self->child_pidfd1); in TEST_F()
698 if (self->child_nsfds2[i] < 0 || !info->flag) in TEST_F()
701 ASSERT_NE(setns(self->child_pidfd2, info->flag), 0) { in TEST_F()
703 info->name, self->child_pid2, in TEST_F()
704 self->child_pidfd2); in TEST_F()
707 info->name, self->child_pid2, in TEST_F()
708 self->child_pidfd2); in TEST_F()
710 ASSERT_NE(setns(self->child_nsfds2[i], info->flag), 0) { in TEST_F()
712 info->name, self->child_pid2, in TEST_F()
713 self->child_nsfds2[i]); in TEST_F()
716 info->name, self->child_pid2, in TEST_F()
717 self->child_nsfds2[i]); in TEST_F()
729 if (self->child_pidfd_derived_nsfds2[i] < 0 || !info->flag) in TEST_F()
732 ASSERT_NE(setns(self->child_pidfd_derived_nsfds2[i], info->flag), 0) { in TEST_F()
734 info->name, self->child_pid2, in TEST_F()
735 self->child_pidfd_derived_nsfds2[i]); in TEST_F()
738 info->name, self->child_pid2, in TEST_F()
739 self->child_pidfd_derived_nsfds2[i]); in TEST_F()