[PATCHv4] tst-pidfd.c: UNSUPPORTED if we get EPERM on valid pidfd_getfd call
Mark Wielaard
mark@klomp.org
Mon Jul 11 16:25:44 GMT 2022
pidfd_getfd can fail for a valid pidfd with errno EPERM for various
reasons in a restricted environment. Use FAIL_UNSUPPORTED in that case.
---
v4: Drop all EPERM checks except on the actual (valid) pidfd_getfd
v3: Also test for EPERM on pidfd_open, don't mention
PTRACE_MODE_ATTACH_REALCREDS since it is just one reason for
getting EPERM.
v2: separate ENOSYS and EPERM checks and FAIL_UNSUPPORTED messages
https://code.wildebeest.org/git/user/mjw/glibc/commit/?h=container-perms&id=34f1f3a8a28c292439a1e27e22e39df7c3f7d342
sysdeps/unix/sysv/linux/tst-pidfd.c | 3 +++
1 file changed, 3 insertions(+)
diff --git a/sysdeps/unix/sysv/linux/tst-pidfd.c b/sysdeps/unix/sysv/linux/tst-pidfd.c
index d93b6faa6f..c598c88661 100644
--- a/sysdeps/unix/sysv/linux/tst-pidfd.c
+++ b/sysdeps/unix/sysv/linux/tst-pidfd.c
@@ -142,6 +142,9 @@ do_test (void)
xrecvfrom (sockets[0], &remote_fd, sizeof (remote_fd), 0, NULL, 0);
int fd = pidfd_getfd (pidfd, remote_fd, 0);
+ if (fd == -1 && errno == EPERM)
+ FAIL_UNSUPPORTED ("don't have permission to use pidfd_getfd on pidfd, "
+ "skipping test");
TEST_VERIFY (fd > 0);
char *path = xasprintf ("/proc/%d/fd/%d", pid, remote_fd);
--
2.18.4
More information about the Libc-alpha
mailing list