summaryrefslogtreecommitdiff
path: root/Linux-Detect-user-namespace-support-in-io-tst-getcwd.patch
diff options
context:
space:
mode:
Diffstat (limited to 'Linux-Detect-user-namespace-support-in-io-tst-getcwd.patch')
-rw-r--r--Linux-Detect-user-namespace-support-in-io-tst-getcwd.patch53
1 files changed, 53 insertions, 0 deletions
diff --git a/Linux-Detect-user-namespace-support-in-io-tst-getcwd.patch b/Linux-Detect-user-namespace-support-in-io-tst-getcwd.patch
new file mode 100644
index 0000000..9ae3ffb
--- /dev/null
+++ b/Linux-Detect-user-namespace-support-in-io-tst-getcwd.patch
@@ -0,0 +1,53 @@
+From 3438bbca90895d32825a52e31a77dc44d273c1c1 Mon Sep 17 00:00:00 2001
+From: Florian Weimer <fweimer@redhat.com>
+Date: Mon, 24 Jan 2022 18:14:24 +0100
+Subject: [PATCH] Linux: Detect user namespace support in
+ io/tst-getcwd-smallbuff
+
+Otherwise the test fails with certain container runtimes.
+
+Reviewed-by: Siddhesh Poyarekar <siddhesh@sourceware.org>
+(cherry picked from commit 5b8e7980c5dabd9aaefeba4f0208baa8cf7653ee)
+---
+ sysdeps/unix/sysv/linux/tst-getcwd-smallbuff.c | 18 ++++++++++++++++++
+ 1 file changed, 18 insertions(+)
+
+diff --git a/sysdeps/unix/sysv/linux/tst-getcwd-smallbuff.c b/sysdeps/unix/sysv/linux/tst-getcwd-smallbuff.c
+index d460d6e..55362f6 100644
+--- a/sysdeps/unix/sysv/linux/tst-getcwd-smallbuff.c
++++ b/sysdeps/unix/sysv/linux/tst-getcwd-smallbuff.c
+@@ -34,6 +34,7 @@
+ #include <sys/un.h>
+ #include <support/check.h>
+ #include <support/temp_file.h>
++#include <support/test-driver.h>
+ #include <support/xsched.h>
+ #include <support/xunistd.h>
+
+@@ -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),
+--
+1.8.3.1
+