]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
pidfs: return -EREMOTE when PIDFD_GET_INFO is called on another ns
authorLuca Boccassi <luca.boccassi@gmail.com>
Tue, 27 Jan 2026 22:51:37 +0000 (22:51 +0000)
committerChristian Brauner <brauner@kernel.org>
Mon, 2 Feb 2026 08:52:26 +0000 (09:52 +0100)
Currently it is not possible to distinguish between the case where a
process has already exited and the case where a process is in a
different namespace, as both return -ESRCH.
glibc's pidfd_getpid() procfs-based implementation returns -EREMOTE
in the latter, so that distinguishing the two is possible, as the
fdinfo in procfs will list '0' as the PID in that case:

https://sourceware.org/git/?p=glibc.git;a=blob;f=sysdeps/unix/sysv/linux/pidfd_getpid.c;h=860829cf07da2267484299ccb02861822c0d07b4;hb=HEAD#l121

Change the error code so that the kernel also returns -EREMOTE in
that case.

Fixes: 7477d7dce48a ("pidfs: allow to retrieve exit information")
Signed-off-by: Luca Boccassi <luca.boccassi@gmail.com>
Link: https://patch.msgid.link/20260127225209.2293342-1-luca.boccassi@gmail.com
Signed-off-by: Christian Brauner <brauner@kernel.org>
fs/pidfs.c

index dba703d4ce4a8a1a1c96f4aa6fcc3f5dd5aa3169..8e66d3993dd84031890440808ee11028d54a2e8a 100644 (file)
@@ -329,7 +329,7 @@ static long pidfd_info(struct file *file, unsigned int cmd, unsigned long arg)
         * namespace hierarchy.
         */
        if (!pid_in_current_pidns(pid))
-               return -ESRCH;
+               return -EREMOTE;
 
        attr = READ_ONCE(pid->attr);
        if (mask & PIDFD_INFO_EXIT) {