Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > linux.kernel > #1305081
| From | "Kirill A. Shutemov" <kirill@shutemov.name> |
|---|---|
| Newsgroups | linux.kernel |
| Subject | Re: mm: possible deadlock in mm_take_all_locks |
| Date | 2016-01-09 00:30 +0100 |
| Message-ID | <qOODM-5p4-11@gated-at.bofh.it> (permalink) |
| References | <qOIym-YW-9@gated-at.bofh.it> |
| Organization | linux.* mail to news gateway |
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
Back to linux.kernel | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread
mm: possible deadlock in mm_take_all_locks Dmitry Vyukov <dvyukov@google.com> - 2016-01-08 18:00 +0100
Re: mm: possible deadlock in mm_take_all_locks "Kirill A. Shutemov" <kirill@shutemov.name> - 2016-01-09 00:30 +0100
Re: mm: possible deadlock in mm_take_all_locks Dmitry Vyukov <dvyukov@google.com> - 2016-01-10 09:10 +0100
Re: mm: possible deadlock in mm_take_all_locks "Kirill A. Shutemov" <kirill@shutemov.name> - 2016-01-10 21:40 +0100
Re: mm: possible deadlock in mm_take_all_locks Dmitry Vyukov <dvyukov@google.com> - 2016-01-11 10:10 +0100
csiph-web