Tue Oct 13 00:24:35 2015 UTC ()
In execve_runproc(), update the p_waited entry for the process being
moved to SSTOP state, not for its parent.  (It is correct to update
the parent's p_nstopchild count.)  If the value is not already zero,
it could prevent its parent from waiting for the process.

Fixes PR kern/50298

Pullups will be requested for:

       NetBSD-7, -6, -6-0, -6-1, -5, -5-0, -5-1, and -5-2


(pgoyette)
diff -r1.418 -r1.419 src/sys/kern/kern_exec.c

cvs diff -r1.418 -r1.419 src/sys/kern/kern_exec.c (expand / switch to context diff)
--- src/sys/kern/kern_exec.c 2015/10/02 16:54:15 1.418
+++ src/sys/kern/kern_exec.c 2015/10/13 00:24:35 1.419
@@ -1,4 +1,4 @@
-/*	$NetBSD: kern_exec.c,v 1.418 2015/10/02 16:54:15 christos Exp $	*/
+/*	$NetBSD: kern_exec.c,v 1.419 2015/10/13 00:24:35 pgoyette Exp $	*/
 
 /*-
  * Copyright (c) 2008 The NetBSD Foundation, Inc.
@@ -59,7 +59,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: kern_exec.c,v 1.418 2015/10/02 16:54:15 christos Exp $");
+__KERNEL_RCSID(0, "$NetBSD: kern_exec.c,v 1.419 2015/10/13 00:24:35 pgoyette Exp $");
 
 #include "opt_exec.h"
 #include "opt_execfmt.h"
@@ -1282,7 +1282,7 @@
 
 		KERNEL_UNLOCK_ALL(l, &l->l_biglocks);
 		p->p_pptr->p_nstopchild++;
-		p->p_pptr->p_waited = 0;
+		p->p_waited = 0;
 		mutex_enter(p->p_lock);
 		ksiginfo_queue_init(&kq);
 		sigclearall(p, &contsigmask, &kq);