proc_realparent: if p_oppid does not match pid of the current parent

for non-orphaned process, return reaper instead of init.

Tested by:	pho
Sponsored by:	The FreeBSD Foundation
MFC after:	1 week
Differential revision:	https://reviews.freebsd.org/D26416
This commit is contained in:
Konstantin Belousov 2020-09-16 21:38:24 +00:00
parent 82207cd246
commit 844219f471

View File

@ -104,7 +104,7 @@ proc_realparent(struct proc *child)
sx_assert(&proctree_lock, SX_LOCKED);
if ((child->p_treeflag & P_TREE_ORPHANED) == 0)
return (child->p_pptr->p_pid == child->p_oppid ?
child->p_pptr : initproc);
child->p_pptr : child->p_reaper);
for (p = child; (p->p_treeflag & P_TREE_FIRST_ORPHAN) == 0;) {
/* Cannot use LIST_PREV(), since the list head is not known. */
p = __containerof(p->p_orphan.le_prev, struct proc,