summaryrefslogtreecommitdiffstats
path: root/sys/kern/kern_synch.c
diff options
context:
space:
mode:
authorkib <kib@FreeBSD.org>2009-07-14 22:50:41 +0000
committerkib <kib@FreeBSD.org>2009-07-14 22:50:41 +0000
commitbd93a0c99aeae8ceb8cb06ce8f941dd42f51b0bc (patch)
treeedfdc0d609693bf9b19c6c4798ab14a951073593 /sys/kern/kern_synch.c
parent57ca4583e728cab422fba8f15de10bd0b637b3dd (diff)
downloadFreeBSD-src-bd93a0c99aeae8ceb8cb06ce8f941dd42f51b0bc.zip
FreeBSD-src-bd93a0c99aeae8ceb8cb06ce8f941dd42f51b0bc.tar.gz
When wakeup(9) is going to notify swapper, assert that wait channel is not
equal to &proc0. It shall be not, since proc0 stack is not swappable, and kick_proc0() is wakeup(&proc0). Reviewed by: jhb Approved by: re (kensmith)
Diffstat (limited to 'sys/kern/kern_synch.c')
-rw-r--r--sys/kern/kern_synch.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/sys/kern/kern_synch.c b/sys/kern/kern_synch.c
index b91c1a5..aad12b6 100644
--- a/sys/kern/kern_synch.c
+++ b/sys/kern/kern_synch.c
@@ -347,8 +347,11 @@ wakeup(void *ident)
sleepq_lock(ident);
wakeup_swapper = sleepq_broadcast(ident, SLEEPQ_SLEEP, 0, 0);
sleepq_release(ident);
- if (wakeup_swapper)
+ if (wakeup_swapper) {
+ KASSERT(ident != &proc0,
+ ("wakeup and wakeup_swapper and proc0"));
kick_proc0();
+ }
}
/*
OpenPOWER on IntegriCloud