On Thu, Oct 17, 2019 at 12:18:28PM +0200, Christian Brauner wrote: > Currently, when a task is dead we still print the pid it used to use in > the fdinfo files of its pidfds. This doesn't make much sense since the > pid may have already been reused. So verify that the task is still alive > by introducing the pid_has_task() helper which will be used by other > callers in follow-up patches. > If the task is not alive anymore, we will print -1. This allows us to > differentiate between a task not being present in a given pid namespace > - in which case we already print 0 - and a task having been reaped. > > Note that this uses PIDTYPE_PID for the check. Technically, we could've > checked PIDTYPE_TGID since pidfds currently only refer to thread-group > leaders but if they won't anymore in the future then this check becomes > problematic without it being immediately obvious to non-experts imho. If > a thread is created via clone(CLONE_THREAD) than struct pid has a single > non-empty list pid->tasks[PIDTYPE_PID] and this pid can't be used as a > PIDTYPE_TGID meaning pid->tasks[PIDTYPE_TGID] will return NULL even > though the thread-group leader might still be very much alive. So > checking PIDTYPE_PID is fine and is easier to maintain should we ever > allow pidfds to refer to threads. > > Cc: Jann Horn <jannh@xxxxxxxxxx> > Cc: Christian Kellner <christian@xxxxxxxxxx> > Cc: linux-api@xxxxxxxxxxxxxxx > Signed-off-by: Christian Brauner <christian.brauner@xxxxxxxxxx> > Reviewed-by: Oleg Nesterov <oleg@xxxxxxxxxx> Applied this series to: https://git.kernel.org/pub/scm/linux/kernel/git/brauner/linux.git/log/?h=pidfd Thanks! Christian