Re: [PATCH v2 2/2] pidfs: ensure consistent ENOENT/ESRCH reporting
From: Oleg Nesterov
Date: Fri Apr 11 2025 - 09:58:25 EST
For both patches:
Reviewed-by: Oleg Nesterov <oleg@xxxxxxxxxx>
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.