Module Name: src Committed By: kre Date: Mon Nov 14 08:55:51 UTC 2016
Modified Files: src/sys/kern: kern_proc.c src/sys/miscfs/procfs: procfs_status.c Log Message: Return the "true" parent's pid as the parent pid (ppid) via the various sysctl/procfs interfaces that allow it to be interrogated. (This is rather than the temporary parent's pid when a process is being traced and has been reparented.) XXX The ppid in elf32 core files has not been similarly adjusted, XXX Should it be ? To generate a diff of this commit: cvs rdiff -u -r1.198 -r1.199 src/sys/kern/kern_proc.c cvs rdiff -u -r1.36 -r1.37 src/sys/miscfs/procfs/procfs_status.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/sys/kern/kern_proc.c diff -u src/sys/kern/kern_proc.c:1.198 src/sys/kern/kern_proc.c:1.199 --- src/sys/kern/kern_proc.c:1.198 Thu Sep 29 20:40:53 2016 +++ src/sys/kern/kern_proc.c Mon Nov 14 08:55:51 2016 @@ -1,4 +1,4 @@ -/* $NetBSD: kern_proc.c,v 1.198 2016/09/29 20:40:53 christos Exp $ */ +/* $NetBSD: kern_proc.c,v 1.199 2016/11/14 08:55:51 kre Exp $ */ /*- * Copyright (c) 1999, 2006, 2007, 2008 The NetBSD Foundation, Inc. @@ -62,7 +62,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: kern_proc.c,v 1.198 2016/09/29 20:40:53 christos Exp $"); +__KERNEL_RCSID(0, "$NetBSD: kern_proc.c,v 1.199 2016/11/14 08:55:51 kre Exp $"); #ifdef _KERNEL_OPT #include "opt_kstack.h" @@ -2186,8 +2186,7 @@ fill_eproc(struct proc *p, struct eproc strncpy(ep->e_wmesg, l->l_wmesg, WMESGLEN); lwp_unlock(l); } - if (p->p_pptr) - ep->e_ppid = p->p_pptr->p_pid; + ep->e_ppid = p->p_ppid; if (p->p_pgrp && p->p_session) { ep->e_pgid = p->p_pgrp->pg_id; ep->e_jobc = p->p_pgrp->pg_jobc; @@ -2247,10 +2246,7 @@ fill_kproc2(struct proc *p, struct kinfo ki->p_flag |= sysctl_map_flags(sysctl_lflagmap, p->p_lflag); ki->p_flag |= sysctl_map_flags(sysctl_stflagmap, p->p_stflag); ki->p_pid = p->p_pid; - if (p->p_pptr) - ki->p_ppid = p->p_pptr->p_pid; - else - ki->p_ppid = 0; + ki->p_ppid = p->p_ppid; ki->p_uid = kauth_cred_geteuid(p->p_cred); ki->p_ruid = kauth_cred_getuid(p->p_cred); ki->p_gid = kauth_cred_getegid(p->p_cred); Index: src/sys/miscfs/procfs/procfs_status.c diff -u src/sys/miscfs/procfs/procfs_status.c:1.36 src/sys/miscfs/procfs/procfs_status.c:1.37 --- src/sys/miscfs/procfs/procfs_status.c:1.36 Wed Oct 21 21:12:06 2009 +++ src/sys/miscfs/procfs/procfs_status.c Mon Nov 14 08:55:51 2016 @@ -1,4 +1,4 @@ -/* $NetBSD: procfs_status.c,v 1.36 2009/10/21 21:12:06 rmind Exp $ */ +/* $NetBSD: procfs_status.c,v 1.37 2016/11/14 08:55:51 kre Exp $ */ /* * Copyright (c) 1993 @@ -72,7 +72,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: procfs_status.c,v 1.36 2009/10/21 21:12:06 rmind Exp $"); +__KERNEL_RCSID(0, "$NetBSD: procfs_status.c,v 1.37 2016/11/14 08:55:51 kre Exp $"); #include <sys/param.h> #include <sys/systm.h> @@ -114,7 +114,7 @@ procfs_dostatus( mutex_enter(p->p_lock); pid = p->p_pid; - ppid = p->p_pptr ? p->p_pptr->p_pid : 0, + ppid = p->p_ppid; pgid = p->p_pgrp->pg_id; sess = p->p_pgrp->pg_session; sid = sess->s_sid;