diff options
| author | Russell King <rmk+kernel@arm.linux.org.uk> | 2010-10-08 04:58:55 -0400 |
|---|---|---|
| committer | Russell King <rmk+kernel@arm.linux.org.uk> | 2010-10-08 04:58:55 -0400 |
| commit | 552dc340bce3b28f4af33c9134adafa5efacf1c9 (patch) | |
| tree | 8ec5d6d4f7462e92baa0732aa2c47cc33a0b851c /mm/rmap.c | |
| parent | a9fda02bfc91a281cd812ae15dabe6bfb9574f90 (diff) | |
| parent | ee621dd619b9a85eced150fc06e352fef54cfda0 (diff) | |
Merge branch 'for_rmk' of git://github.com/at91linux/linux-2.6-at91 into devel-stable
Diffstat (limited to 'mm/rmap.c')
| -rw-r--r-- | mm/rmap.c | 8 |
1 files changed, 7 insertions, 1 deletions
| @@ -381,7 +381,13 @@ vma_address(struct page *page, struct vm_area_struct *vma) | |||
| 381 | unsigned long page_address_in_vma(struct page *page, struct vm_area_struct *vma) | 381 | unsigned long page_address_in_vma(struct page *page, struct vm_area_struct *vma) |
| 382 | { | 382 | { |
| 383 | if (PageAnon(page)) { | 383 | if (PageAnon(page)) { |
| 384 | if (vma->anon_vma->root != page_anon_vma(page)->root) | 384 | struct anon_vma *page__anon_vma = page_anon_vma(page); |
| 385 | /* | ||
| 386 | * Note: swapoff's unuse_vma() is more efficient with this | ||
| 387 | * check, and needs it to match anon_vma when KSM is active. | ||
| 388 | */ | ||
| 389 | if (!vma->anon_vma || !page__anon_vma || | ||
| 390 | vma->anon_vma->root != page__anon_vma->root) | ||
| 385 | return -EFAULT; | 391 | return -EFAULT; |
| 386 | } else if (page->mapping && !(vma->vm_flags & VM_NONLINEAR)) { | 392 | } else if (page->mapping && !(vma->vm_flags & VM_NONLINEAR)) { |
| 387 | if (!vma->vm_file || | 393 | if (!vma->vm_file || |
