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;

Reply via email to