From 71a1b65ba926ff9c6db3cb671580b5491db0bd97 Mon Sep 17 00:00:00 2001 From: Tavian Barnes Date: Fri, 5 Jul 2019 19:11:20 -0400 Subject: stat: Treat EPERM like ENOSYS for statx() On some configurations (e.g. old Docker with the default seccomp() profile), statx() fails with EPERM. Consider this to mean statx() is unsupported, as EPERM is not a documented error code in normal operation. Possible fix for https://github.com/alpinelinux/aports/pull/9277 --- stat.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/stat.c b/stat.c index e3d5400..a2e2c8d 100644 --- a/stat.c +++ b/stat.c @@ -282,7 +282,9 @@ static int bfs_stat_explicit(int at_fd, const char *at_path, int at_flags, enum if (has_statx) { int ret = bfs_statx_impl(at_fd, at_path, at_flags, flags, buf); - if (ret != 0 && errno == ENOSYS) { + // EPERM is commonly returned in a seccomp() sandbox that does + // not allow statx() + if (ret != 0 && (errno == ENOSYS || errno == EPERM)) { has_statx = false; } else { return ret; -- cgit v1.2.3