Re: [PATCH v2 2/2] pidfs: ensure consistent ENOENT/ESRCH reporting

Oleg Nesterov
2025-04-11T13:55:30Z

For both patches:

Reviewed-by: Oleg Nesterov <oleg@redhat.com>

a minor nit below...

On 04/11, Christian Brauner wrote:
>
> int pidfd_prepare(struct pid *pid, unsigned int flags, struct file **ret)
> {
> - int err = 0;
> -
> - if (!(flags & PIDFD_THREAD)) {
> + scoped_guard(spinlock_irq, &pid->wait_pidfd.lock) {
> + /*
> + * If this wasn't a thread-group leader struct pid or
> + * the task already been reaped report ESRCH to
> + * userspace.
> + */
> + if (!pid_has_task(pid, PIDTYPE_PID))
> + return -ESRCH;

The "If this wasn't a thread-group leader struct pid" part of the
comment looks a bit confusing to me, as if pid_has_task(PIDTYPE_PID)
should return false in this case.

OTOH, perhaps it makes sense to explain scoped_guard(wait_pidfd.lock)?
Something like "see unhash_process -> wake_up_all(), detach_pid(TGID)
isn't possible if pid_has_task(PID) succeeds".

Oleg.