From c675851d5fd503c1ae5d244f041d43ae9e3ab79b Mon Sep 17 00:00:00 2001 From: Mike Yuan Date: Mon, 20 May 2024 19:33:26 +0800 Subject: [PATCH] fs-util: try AT_EMPTY_PATH for access_fd() first --- src/basic/fs-util.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/basic/fs-util.c b/src/basic/fs-util.c index 6df53cb0c4c..92ceb3b352e 100644 --- a/src/basic/fs-util.c +++ b/src/basic/fs-util.c @@ -675,6 +675,14 @@ int access_fd(int fd, int mode) { /* Like access() but operates on an already open fd */ + if (faccessat(fd, "", mode, AT_EMPTY_PATH) >= 0) + return 0; + if (errno != EINVAL) + return -errno; + + /* Support for AT_EMPTY_PATH is added rather late (kernel 5.8), so fall back to going through /proc/ + * if unavailable. */ + if (access(FORMAT_PROC_FD_PATH(fd), mode) < 0) { if (errno != ENOENT) return -errno; -- 2.47.3