Commit 21d0d443cdc1658a8c1484fdcece4803f0f96d0e
Committed by
Linus Torvalds
1 parent
288468c334
Exists in
master
and in
20 other branches
rmap: resurrect page_address_in_vma anon_vma check
With root anon-vma it's trivial to keep doing the usual check as in old-anon-vma code. Signed-off-by: Andrea Arcangeli <aarcange@redhat.com> Signed-off-by: Rik van Riel <riel@redhat.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Showing 1 changed file with 4 additions and 3 deletions Side-by-side Diff
mm/rmap.c
... | ... | @@ -364,9 +364,10 @@ |
364 | 364 | */ |
365 | 365 | unsigned long page_address_in_vma(struct page *page, struct vm_area_struct *vma) |
366 | 366 | { |
367 | - if (PageAnon(page)) | |
368 | - ; | |
369 | - else if (page->mapping && !(vma->vm_flags & VM_NONLINEAR)) { | |
367 | + if (PageAnon(page)) { | |
368 | + if (vma->anon_vma->root != page_anon_vma(page)->root) | |
369 | + return -EFAULT; | |
370 | + } else if (page->mapping && !(vma->vm_flags & VM_NONLINEAR)) { | |
370 | 371 | if (!vma->vm_file || |
371 | 372 | vma->vm_file->f_mapping != page->mapping) |
372 | 373 | return -EFAULT; |