On Fri, Jan 08, 2016 at 05:58:33PM +0100, Dmitry Vyukov wrote: > Hello, > > I've hit the following deadlock warning while running syzkaller fuzzer > on commit b06f3a168cdcd80026276898fd1fee443ef25743. As far as I > understand this is a false positive, because both call stacks are > protected by mm_all_locks_mutex. +Michal I don't think it's false positive. The reason we don't care about order of taking i_mmap_rwsem is that we never takes i_mmap_rwsem under other i_mmap_rwsem, but that's not true for i_mmap_rwsem vs. hugetlbfs_i_mmap_rwsem_key. That's why we have the annotation in the first place. See commit b610ded71918 ("hugetlb: fix lockdep splat caused by pmd sharing"). Consider totally untested patch below. diff --git a/mm/mmap.c b/mm/mmap.c index 2ce04a649f6b..63aefcf409e1 100644 --- a/mm/mmap.c +++ b/mm/mmap.c @@ -3203,7 +3203,16 @@ int mm_take_all_locks(struct mm_struct *mm) for (vma = mm->mmap; vma; vma = vma->vm_next) { if (signal_pending(current)) goto out_unlock; - if (vma->vm_file && vma->vm_file->f_mapping) + if (vma->vm_file && vma->vm_file->f_mapping && + !is_vm_hugetlb_page(vma)) + vm_lock_mapping(mm, vma->vm_file->f_mapping); + } + + for (vma = mm->mmap; vma; vma = vma->vm_next) { + if (signal_pending(current)) + goto out_unlock; + if (vma->vm_file && vma->vm_file->f_mapping && + is_vm_hugetlb_page(vma)) vm_lock_mapping(mm, vma->vm_file->f_mapping); } -- Kirill A. Shutemov -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to majordomo@xxxxxxxxx. For more info on Linux MM, see: http://www.linux-mm.org/ . Don't email: <a href=mailto:"dont@xxxxxxxxx"> email@xxxxxxxxx </a>