From 8fe8f3aabad344b2a237f4ec022516fd835031c4 Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Wed, 23 Sep 2020 18:16:34 +0200 Subject: [PATCH] basic: update fd_get_path() to use proc_mounted() helper We use it pretty much everywhere else, hence use it here too. This also changes the error generated from EOPNOTSUPP to ENOSYS, to match the other cases where we do such a check. One user checked for EOPNOTSUPP which is updated to check for ENOSYS instead. --- src/basic/fd-util.c | 8 +++----- src/basic/fs-util.c | 4 ++-- 2 files changed, 5 insertions(+), 7 deletions(-) diff --git a/src/basic/fd-util.c b/src/basic/fd-util.c index 14b12b2706..56700bc057 100644 --- a/src/basic/fd-util.c +++ b/src/basic/fd-util.c @@ -385,11 +385,9 @@ int fd_get_path(int fd, char **ret) { /* ENOENT can mean two things: that the fd does not exist or that /proc is not mounted. Let's make * things debuggable and distinguish the two. */ - if (access("/proc/self/fd/", F_OK) < 0) - /* /proc is not available or not set up properly, we're most likely in some chroot - * environment. */ - return errno == ENOENT ? -EOPNOTSUPP : -errno; - + if (proc_mounted() == 0) + return -ENOSYS; /* /proc is not available or not set up properly, we're most likely in some chroot + * environment. */ return -EBADF; /* The directory exists, hence it's the fd that doesn't. */ } diff --git a/src/basic/fs-util.c b/src/basic/fs-util.c index 7f8b8b22b3..477848f2a0 100644 --- a/src/basic/fs-util.c +++ b/src/basic/fs-util.c @@ -1441,9 +1441,9 @@ int fsync_directory_of_file(int fd) { if (r < 0) { log_debug_errno(r, "Failed to query /proc/self/fd/%d%s: %m", fd, - r == -EOPNOTSUPP ? ", ignoring" : ""); + r == -ENOSYS ? ", ignoring" : ""); - if (r == -EOPNOTSUPP) + if (r == -ENOSYS) /* If /proc is not available, we're most likely running in some * chroot environment, and syncing the directory is not very * important in that case. Let's just silently do nothing. */