I was confused by the fact that child_reaper.pspace is actually a parent pspace.+static inline int pspace_task_visible(struct pspace *pspace, struct
task_struct *tsk)
+{
+ return (tsk->pspace == pspace) ||
+ ((tsk->pspace->child_reaper.pspace == pspace) &&
+ (tsk->pspace->child_reaper.task == tsk));
<<< the logic with child_reaper which can be somehow partly inside pspace... and
this check is not that abvious.
This is the check for what shows up in /proc.
Given that is how I have explicitly documented things to work, (the
init process straddles the boundary) I fail to see how it is not obvious.