Messages in this thread | | | Date | Thu, 01 Apr 2010 10:16:46 -0400 | From | Rik van Riel <> | Subject | Re: [COUNTERPATCH] mm: avoid overflowing preempt_count() in mmu_take_all_locks() |
| |
On 04/01/2010 07:04 AM, Thomas Gleixner wrote: > On Thu, 1 Apr 2010, Peter Zijlstra wrote: >> I'm sure you dropped Ingo and Thomas by accident. >> >> On Thu, 2010-04-01 at 12:40 +0300, Avi Kivity wrote: >>> mmu_take_all_locks() takes a spinlock for each vma, which means we increase >>> the preempt count by the number of vmas in an address space. Since the user >>> controls the number of vmas, they can cause preempt_count to overflow. >>> >>> Fix by making mmu_take_all_locks() only disable preemption once by making >>> the spinlocks preempt-neutral. >> >> Right, so while this will get rid of the warning it doesn't make the >> code any nicer, its still a massive !preempt latency spot. > > I'm not sure whether this is a real well done April 1st joke or if there > is someone trying to secure the "bad taste patch of the month" price. > > Anyway, I don't see a reason why we can't convert those locks to > mutexes and get rid of the whole preempt disabled region.
That would involve converting most of the locks in mm/ to mutexes, since these two locks get nested under all kinds of other spinlocks...
| |