In a prior patch series we tried to cleanly differentiate between: (1) The task has already been reaped. (2) The caller requested a pidfd for a thread-group leader but the pid actually references a struct pid that isn't used as a thread-group leader. as this was causing issues for non-threaded workloads. But there's cases where the current simple logic is wrong. Specifically, if the pid was a leader pid and the check races with __unhash_process(). Stabilize this by using the pidfd waitqueue lock. Signed-off-by: Christian Brauner <brauner@xxxxxxxxxx> --- Christian Brauner (2): exit: move wake_up_all() pidfd waiters into __unhash_process() pidfs: ensure consistent ENOENT/ESRCH reporting kernel/exit.c | 5 +++++ kernel/fork.c | 31 +++++++++++++------------------ kernel/pid.c | 5 ----- 3 files changed, 18 insertions(+), 23 deletions(-) --- base-commit: 1e940fff94374d04b6c34f896ed9fbad3d2fb706 change-id: 20250411-work-pidfs-enoent-747579160c8c