svn commit: r195700 - head/sys/kern

[ Available lists | Index of svn-src-head | Month of Jul 2009 | Week of 14 Jul 2009 | Raw email | View thread | Wrap long lines | Reply | Tag ]
From
Konstantin Belousov <kib@FreeBSD.org>
Date
14 Jul 2009 22:50:42
Subject
svn commit: r195700 - head/sys/kern
Message-ID
200907142250.n6EMofBo073560@svn.freebsd.org


[ Hide this part ]
Author: kib
Date: Tue Jul 14 22:50:41 2009
New Revision: 195700
URL: http://svn.freebsd.org/changeset/base/195700

Log:
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)

Modified:
head/sys/kern/kern_synch.c

Modified: head/sys/kern/kern_synch.c
==============================================================================
--- head/sys/kern/kern_synch.c Tue Jul 14 22:48:30 2009 (r195699)
+++ head/sys/kern/kern_synch.c Tue Jul 14 22:50:41 2009 (r195700)
@@ -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();
+ }
}

/*


Elapsed time: 0.063 seconds