summaryrefslogtreecommitdiffstats
path: root/mm/huge_memory.c
diff options
context:
space:
mode:
authorMichel Lespinasse <walken@google.com>2012-10-09 01:31:42 +0200
committerLinus Torvalds <torvalds@linux-foundation.org>2012-10-09 09:22:41 +0200
commit86c2ad19956f84f2191e062fcb979367b6365871 (patch)
treebca7d7106964266b24ecfa1256d2586a315571cf /mm/huge_memory.c
parentmm anon rmap: replace same_anon_vma linked list with an interval tree. (diff)
downloadlinux-86c2ad19956f84f2191e062fcb979367b6365871.tar.xz
linux-86c2ad19956f84f2191e062fcb979367b6365871.zip
mm rmap: remove vma_address check for address inside vma
In file and anon rmap, we use interval trees to find potentially relevant vmas and then call vma_address() to find the virtual address the given page might be found at in these vmas. vma_address() used to include a check that the returned address falls within the limits of the vma, but this check isn't necessary now that we always use interval trees in rmap: the interval tree just doesn't return any vmas which this check would find to be irrelevant. As a result, we can replace the use of -EFAULT error code (which then needed to be checked in every call site) with a VM_BUG_ON(). Signed-off-by: Michel Lespinasse <walken@google.com> Cc: Andrea Arcangeli <aarcange@redhat.com> Cc: Rik van Riel <riel@redhat.com> Cc: Peter Zijlstra <a.p.zijlstra@chello.nl> Cc: Daniel Santos <daniel.santos@pobox.com> Cc: Hugh Dickins <hughd@google.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'mm/huge_memory.c')
-rw-r--r--mm/huge_memory.c4
1 files changed, 0 insertions, 4 deletions
diff --git a/mm/huge_memory.c b/mm/huge_memory.c
index ce59ada09462..7cf8b0ec11ec 100644
--- a/mm/huge_memory.c
+++ b/mm/huge_memory.c
@@ -1386,8 +1386,6 @@ static void __split_huge_page(struct page *page,
struct vm_area_struct *vma = avc->vma;
unsigned long addr = vma_address(page, vma);
BUG_ON(is_vma_temporary_stack(vma));
- if (addr == -EFAULT)
- continue;
mapcount += __split_huge_page_splitting(page, vma, addr);
}
/*
@@ -1412,8 +1410,6 @@ static void __split_huge_page(struct page *page,
struct vm_area_struct *vma = avc->vma;
unsigned long addr = vma_address(page, vma);
BUG_ON(is_vma_temporary_stack(vma));
- if (addr == -EFAULT)
- continue;
mapcount2 += __split_huge_page_map(page, vma, addr);
}
if (mapcount != mapcount2)