Messages in this thread | | | Date | Fri, 7 Mar 2003 11:10:21 -0800 (PST) | From | Linus Torvalds <> | Subject | Re: [patch] "interactivity changes", sched-2.5.64-B2 |
| |
Ingo, I already merged and pushed out the core changes in -B2, but now that I'm looking more closely at it I'm almost certain that it's buggy.
In particular, you do this:
.. dequeue_task(current, array); current->prio = effective_prio(current); enqueue_task(current, array); ..
without actually holding the rq lock on the array!
Yes, we hold _a_ rq_lock - we hold the rq lock for the array that "p" is on, but that's necessarily the same as this_rq().
So you can end up with the priority bitmap and the runqueue being corrupted by another wakeup on another CPU that wakes up something that is on the runqueue for the current CPU. At which point the machine will be basically dead (runqueue corruption is not likely to be a survivable event).
Or am I missing something?
Linus
- 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/
| |