Messages in this thread | | | Date | Sat, 4 Sep 2004 21:51:41 +0200 | From | Ingo Molnar <> | Subject | [patch] voluntary-preempt-2.6.9-rc1-bk4-R4 |
| |
ok, found and fixed the bug reported by K.R. Foley, and found the bug reported by Florian Schmidt as well.
the first bug was caused by an unrobustness in cond_resched(). The bug happens when a task that is in do_exit() happens to be preempted via cond_resched() - the TASK_ZOMBIE/TASK_DEAD task state is overwritten with TASK_RUNNING and then the task crashes in the 'final' schedule. To fix this i've changed cond_resched() to be much closer in behavior to preempt_schedule() - this makes sense anyway.
Florian's bug triggers if softirq_preemption is disabled: if a softirq still gets delayed to softirqd (this can happen even in the stock kernel, under certain circumstances) then it would be executed without disabling direct softirq execution. While this is safe and intended to make softirqd preemptable when softirq_preemption==1, it's unsafe and an illegal preemption when there are indirect softirqs around. The fix is to properly disable softirqs in this branch too.
i've uploaded -R4 which fixes these two bugs:
http://redhat.com/~mingo/voluntary-preempt/voluntary-preempt-2.6.9-rc1-bk4-R4
other changes in -R4:
- add the RX-break-up to e100.c which was promised in -R0 - patch was missing by mistake.
- small tweaks to the latency_trace header
Ingo - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
| |