| From 2761400989bcbf11e10bc85f90c3a2ba1305c4ae Mon Sep 17 00:00:00 2001 |
| From: Khem Raj <raj.khem@gmail.com> |
| Date: Sat, 6 Mar 2021 14:48:56 -0800 |
| Subject: [PATCH] nativesdk-glibc: Fall back to faccessat on faccess2 returns |
| EPERM |
| |
| Fedora-specific workaround for systemd-nspawn |
| |
| Upstream-Status: Inappropriate [Distro Specific] |
| |
| Signed-off-by: Khem Raj <raj.khem@gmail.com> |
| --- |
| sysdeps/unix/sysv/linux/faccessat.c | 6 +++++- |
| 1 file changed, 5 insertions(+), 1 deletion(-) |
| |
| diff --git a/sysdeps/unix/sysv/linux/faccessat.c b/sysdeps/unix/sysv/linux/faccessat.c |
| index 13160d3249..ee3ddc9b79 100644 |
| --- a/sysdeps/unix/sysv/linux/faccessat.c |
| +++ b/sysdeps/unix/sysv/linux/faccessat.c |
| @@ -30,7 +30,11 @@ __faccessat (int fd, const char *file, int mode, int flag) |
| #if __ASSUME_FACCESSAT2 |
| return ret; |
| #else |
| - if (ret == 0 || errno != ENOSYS) |
| + /* Fedora-specific workaround: |
| + As a workround for a broken systemd-nspawn that returns |
| + EPERM when a syscall is not allowed instead of ENOSYS |
| + we must check for EPERM here and fall back to faccessat. */ |
| + if (ret == 0 || !(errno == ENOSYS || errno == EPERM)) |
| return ret; |
| |
| if (flag & ~(AT_SYMLINK_NOFOLLOW | AT_EACCESS)) |