diff options
author | Naoya Horiguchi <n-horiguchi@ah.jp.nec.com> | 2015-02-11 18:27:40 -0500 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2015-02-11 20:06:05 -0500 |
commit | 900fc5f197b05253ae9433fb9a066c3f37d08f69 (patch) | |
tree | b4a880a4329b4a5c5aaa96a95dc8486a05756e2c /mm/pagewalk.c | |
parent | fafaa4264eba49fd10695c193a82760558d093f4 (diff) |
pagewalk: add walk_page_vma()
Introduce walk_page_vma(), which is useful for the callers which want to
walk over a given vma. It's used by later patches.
Signed-off-by: Naoya Horiguchi <n-horiguchi@ah.jp.nec.com>
Acked-by: Kirill A. Shutemov <kirill.shutemov@linux.intel.com>
Cc: "Kirill A. Shutemov" <kirill.shutemov@linux.intel.com>
Cc: Andrea Arcangeli <aarcange@redhat.com>
Cc: Cyrill Gorcunov <gorcunov@openvz.org>
Cc: Dave Hansen <dave.hansen@intel.com>
Cc: Pavel Emelyanov <xemul@parallels.com>
Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'mm/pagewalk.c')
-rw-r--r-- | mm/pagewalk.c | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/mm/pagewalk.c b/mm/pagewalk.c index d9cc3caae802..4c9a653ba563 100644 --- a/mm/pagewalk.c +++ b/mm/pagewalk.c | |||
@@ -272,3 +272,21 @@ int walk_page_range(unsigned long start, unsigned long end, | |||
272 | } while (start = next, start < end); | 272 | } while (start = next, start < end); |
273 | return err; | 273 | return err; |
274 | } | 274 | } |
275 | |||
276 | int walk_page_vma(struct vm_area_struct *vma, struct mm_walk *walk) | ||
277 | { | ||
278 | int err; | ||
279 | |||
280 | if (!walk->mm) | ||
281 | return -EINVAL; | ||
282 | |||
283 | VM_BUG_ON(!rwsem_is_locked(&walk->mm->mmap_sem)); | ||
284 | VM_BUG_ON(!vma); | ||
285 | walk->vma = vma; | ||
286 | err = walk_page_test(vma->vm_start, vma->vm_end, walk); | ||
287 | if (err > 0) | ||
288 | return 0; | ||
289 | if (err < 0) | ||
290 | return err; | ||
291 | return __walk_page_range(vma->vm_start, vma->vm_end, walk); | ||
292 | } | ||