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 <ja...@google.com> > Cc: Christian Kellner <christ...@kellner.me> > Cc: linux-...@vger.kernel.org > Signed-off-by: Christian Brauner <christian.brau...@ubuntu.com> > Reviewed-by: Oleg Nesterov <o...@redhat.com>
Applied this series to: https://git.kernel.org/pub/scm/linux/kernel/git/brauner/linux.git/log/?h=pidfd Thanks! Christian