summaryrefslogtreecommitdiff
path: root/sys/kern
diff options
context:
space:
mode:
authorPhilip Guenther <guenther@cvs.openbsd.org>2014-07-13 14:56:57 +0000
committerPhilip Guenther <guenther@cvs.openbsd.org>2014-07-13 14:56:57 +0000
commite4de52a7c544b6db1df9deabff97c027591d33f1 (patch)
tree70b9a684410b84ab5bcf0925d7fe08590929f98e /sys/kern
parenta81f7159d4416bba59cca81c9a4af0280bccf303 (diff)
If the only process in the pgrp is in the middle of exiting, it might
not have any threads left. Treat that the same as an empty pgrp. encountered by and ok deraadt@
Diffstat (limited to 'sys/kern')
-rw-r--r--sys/kern/tty.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/sys/kern/tty.c b/sys/kern/tty.c
index 2fb04ad11aa..41b42bab418 100644
--- a/sys/kern/tty.c
+++ b/sys/kern/tty.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: tty.c,v 1.111 2014/07/12 18:43:32 tedu Exp $ */
+/* $OpenBSD: tty.c,v 1.112 2014/07/13 14:56:56 guenther Exp $ */
/* $NetBSD: tty.c,v 1.68.4.2 1996/06/06 16:04:52 thorpej Exp $ */
/*-
@@ -2149,7 +2149,7 @@ ttyinfo(struct tty *tp)
else if (tp->t_pgrp == NULL)
ttyprintf(tp, "no foreground process group\n");
else if ((pr = LIST_FIRST(&tp->t_pgrp->pg_members)) == NULL)
- ttyprintf(tp, "empty foreground process group\n");
+empty: ttyprintf(tp, "empty foreground process group\n");
else {
const char *state;
fixpt_t pctcpu, pctcpu2;
@@ -2219,6 +2219,8 @@ update_pickpr:
* Otherwise take the newest thread
*/
pick = p = TAILQ_FIRST(&pickpr->ps_threads);
+ if (p == NULL)
+ goto empty;
run = p->p_stat == SRUN || p->p_stat == SONPROC;
pctcpu = p->p_pctcpu;
while ((p = TAILQ_NEXT(p, p_thr_link)) != NULL) {