From: Lennart Poettering Date: Fri, 17 Jan 2025 13:01:30 +0000 (+0100) Subject: pidfd-util: dont open a new pidfd unnecessarily in pidfd_check_pidfs() X-Git-Tag: v258-rc1~1545^2~6 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=5dc9d5b4eacbe32f58ad6ca18d70931ab89ea409;p=thirdparty%2Fsystemd.git pidfd-util: dont open a new pidfd unnecessarily in pidfd_check_pidfs() --- diff --git a/src/basic/pidfd-util.c b/src/basic/pidfd-util.c index c90699d066e..62db26d536c 100644 --- a/src/basic/pidfd-util.c +++ b/src/basic/pidfd-util.c @@ -18,16 +18,14 @@ static int have_pidfs = -1; -static int pidfd_check_pidfs(void) { +static int pidfd_check_pidfs(int pid_fd) { + + /* NB: the passed fd *must* be acquired via pidfd_open(), i.e. must be a true pidfd! */ if (have_pidfs >= 0) return have_pidfs; - _cleanup_close_ int fd = pidfd_open(getpid_cached(), 0); - if (fd < 0) - return -errno; - - return (have_pidfs = fd_is_fs_type(fd, PID_FS_MAGIC)); + return (have_pidfs = fd_is_fs_type(pid_fd, PID_FS_MAGIC)); } int pidfd_get_namespace(int fd, unsigned long ns_type_cmd) { @@ -231,7 +229,7 @@ int pidfd_get_inode_id(int fd, uint64_t *ret) { assert(fd >= 0); - r = pidfd_check_pidfs(); + r = pidfd_check_pidfs(fd); if (r < 0) return r; if (r == 0)