On Wed, 7 May 2008, Linus Torvalds wrote:
> The code that can take many locks, will have to get the global lock *and*
> order the types, but that's still trivial. It's something like
>
> spin_lock(&global_lock);
> for (vma = mm->mmap; vma; vma = vma->vm_next) {
> if (vma->anon_vma)
> spin_lock(&vma->anon_vma->lock);
> }
> for (vma = mm->mmap; vma; vma = vma->vm_next) {
> if (!vma->anon_vma && vma->vm_file && vma->vm_file->f_mapping)
> spin_lock(&vma->vm_file->f_mapping->i_mmap_lock);
> }
> spin_unlock(&global_lock);
Multiple vmas may share the same mapping or refer to the same anonymous
vma. The above code will deadlock since we may take some locks multiple
times.
-------------------------------------------------------------------------
This SF.net email is sponsored by the 2008 JavaOne(SM) Conference
Don't miss this year's exciting event. There's still time to save $100.
Use priority code J8TL2D2.
http://ad.doubleclick.net/clk;198757673;13503038;p?http://java.sun.com/javaone
_______________________________________________
kvm-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/kvm-devel