From 3cbbc973d76077cd98f6aa8896c813788c1292e6 Mon Sep 17 00:00:00 2001 From: davidxu Date: Wed, 14 Jun 2006 03:46:03 +0000 Subject: [PATCH] Clear ke_runq before calling maybe_preempt, this avoids a KASSERT(ke->ke_runq == NULL) panic when the sched_add is recursively called by maybe_preempt. Reported by: Wojciech A. Koszek < dunstan at freebsd dot czest dot pl > --- sys/kern/sched_core.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/sys/kern/sched_core.c b/sys/kern/sched_core.c index 5acbb5af6497..3f5554b00189 100644 --- a/sys/kern/sched_core.c +++ b/sys/kern/sched_core.c @@ -2150,8 +2150,10 @@ activate_it: if (ke->ke_runq == my_ksq->ksq_curr && td->td_priority < curthread->td_priority) { curthread->td_flags |= TDF_NEEDRESCHED; + ke->ke_runq = NULL; if (preemptive && maybe_preempt(td)) return; + ke->ke_runq = my_ksq->ksq_curr; if (curthread->td_ksegrp->kg_pri_class == PRI_IDLE) td->td_owepreempt = 1; }