mirror of
https://github.com/morgan9e/systemd
synced 2026-04-14 08:25:20 +09:00
pidfd-util: open an internal pidfd if none is passed in pidfd_check_pidfs()
I'd like to introduce a libsystemd helper for acquiring pidfd
inode id, which however means the fd passed to pidfd_check_pidfs()
can no longer be trusted. Let's add back the logic of allocating
a genuine pidfd allocated internally, which was remove in
5dc9d5b4ea.
This commit is contained in:
@@ -26,6 +26,15 @@ static int pidfd_check_pidfs(int pid_fd) {
|
||||
if (have_pidfs >= 0)
|
||||
return have_pidfs;
|
||||
|
||||
_cleanup_close_ int our_fd = -EBADF;
|
||||
if (pid_fd < 0) {
|
||||
our_fd = pidfd_open(getpid_cached(), /* flags = */ 0);
|
||||
if (our_fd < 0)
|
||||
return -errno;
|
||||
|
||||
pid_fd = our_fd;
|
||||
}
|
||||
|
||||
return (have_pidfs = fd_is_fs_type(pid_fd, PID_FS_MAGIC));
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user