aboutsummaryrefslogtreecommitdiff
path: root/mm/rmap.c
diff options
context:
space:
mode:
authorAndrea Arcangeli <aarcange@redhat.com>2015-11-05 18:49:07 -0800
committerMister Oyster <oysterized@gmail.com>2017-04-11 10:57:17 +0200
commitbc2dd250fe9d1b2034b66a3d9ead632946966503 (patch)
tree8ab26ea9ee82949a21fe7edddb5d3f928700aa99 /mm/rmap.c
parentb0202fae7eaa1b94e67752e1b3f6fabe7ca675f3 (diff)
ksm: add cond_resched() to the rmap_walks
While at it add it to the file and anon walks too. Signed-off-by: Andrea Arcangeli <aarcange@redhat.com> Acked-by: Hugh Dickins <hughd@google.com> Cc: Petr Holasek <pholasek@redhat.com> Acked-by: Davidlohr Bueso <dbueso@suse.de> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org> Signed-off-by: Joe Maples <joe@frap129.org> Conflicts: mm/rmap.c
Diffstat (limited to 'mm/rmap.c')
-rw-r--r--mm/rmap.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/mm/rmap.c b/mm/rmap.c
index 7723d387f..473ad72ad 100644
--- a/mm/rmap.c
+++ b/mm/rmap.c
@@ -1727,6 +1727,7 @@ static int rmap_walk_anon(struct page *page, int (*rmap_one)(struct page *,
anon_vma_interval_tree_foreach(avc, &anon_vma->rb_root, pgoff, pgoff) {
struct vm_area_struct *vma = avc->vma;
unsigned long address = vma_address(page, vma);
+ cond_resched();
ret = rmap_one(page, vma, address, arg);
if (ret != SWAP_AGAIN)
break;
@@ -1748,6 +1749,8 @@ static int rmap_walk_file(struct page *page, int (*rmap_one)(struct page *,
mutex_lock(&mapping->i_mmap_mutex);
vma_interval_tree_foreach(vma, &mapping->i_mmap, pgoff, pgoff) {
unsigned long address = vma_address(page, vma);
+
+ cond_resched();
ret = rmap_one(page, vma, address, arg);
if (ret != SWAP_AGAIN)
break;