On Tue, Jun 14, 2011 at 6:21 PM, Linus Torvalds wrote: > > Anyway, please check me if I'm wrong, but won't the "anon_vma->root" > be the same for all the anon_vma's that are associated with one > particular vma? > > The reason I ask [...] So here's a trial patch that moves the anon_vma locking one level up in the anon_vma_clone() call chain. It actually does allow the root to change, but has a WARN_ON_ONCE() if that ever happens. I *suspect* this will help the locking numbers a bit, but I'd like to note that it does this *only* for the anon_vma_clone() case, and the exact same thing should be done for the exit case too (ie the unlink_anon_vmas()). So if it does work it's still just one step on the way, and there would be more work along the same lines to possibly improve the locking further. The patch is "tested" in the sense that I booted the kernel and am running it right now (and compiled a kernel with it). But that's not a whole lot of actual real life testing, so caveat emptor. And I won't really even guarantee that the main problem locking-wise would be a long chain of "same_vma" anon-vma's that this does with just a single lock. So who knows - maybe it doesn't help at all. I suspect it's worth testing, though. Linus