Commit 21d0d443cdc1658a8c1484fdcece4803f0f96d0e

Authored by Andrea Arcangeli
Committed by Linus Torvalds
1 parent 288468c334

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

... ... @@ -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;