From: Florian Weimer Date: Mon, 24 Jan 2022 17:14:24 +0000 (+0100) Subject: Linux: Detect user namespace support in io/tst-getcwd-smallbuff X-Git-Tag: glibc-2.35~40 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=5b8e7980c5dabd9aaefeba4f0208baa8cf7653ee;p=thirdparty%2Fglibc.git Linux: Detect user namespace support in io/tst-getcwd-smallbuff Otherwise the test fails with certain container runtimes. Reviewed-by: Siddhesh Poyarekar --- diff --git a/sysdeps/unix/sysv/linux/tst-getcwd-smallbuff.c b/sysdeps/unix/sysv/linux/tst-getcwd-smallbuff.c index d460d6e7662..55362f6060a 100644 --- a/sysdeps/unix/sysv/linux/tst-getcwd-smallbuff.c +++ b/sysdeps/unix/sysv/linux/tst-getcwd-smallbuff.c @@ -34,6 +34,7 @@ #include #include #include +#include #include #include @@ -188,6 +189,23 @@ do_test (void) xmkdir (MOUNT_NAME, S_IRWXU); atexit (do_cleanup); + /* Check whether user namespaces are supported. */ + { + pid_t pid = xfork (); + if (pid == 0) + { + if (unshare (CLONE_NEWUSER | CLONE_NEWNS) != 0) + _exit (EXIT_UNSUPPORTED); + else + _exit (0); + } + int status; + xwaitpid (pid, &status, 0); + TEST_VERIFY_EXIT (WIFEXITED (status)); + if (WEXITSTATUS (status) != 0) + return WEXITSTATUS (status); + } + TEST_VERIFY_EXIT (socketpair (AF_UNIX, SOCK_STREAM, 0, sockfd) == 0); pid_t child_pid = xclone (child_func, NULL, child_stack, sizeof (child_stack),