aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKefeng Wang <[email protected]>2022-12-05 22:03:27 +0800
committerAndrew Morton <[email protected]>2022-12-11 18:12:21 -0800
commitde2e5171433126d340573cb7d0d4fcac084ab2a0 (patch)
tree853a2c011413ff9a83d08bf53b6a8a3198a16387
parent8614d6c5eda005ad72b37afeaae2879d7c101b18 (diff)
mm: add cond_resched() in swapin_walk_pmd_entry()
When handling MADV_WILLNEED in madvise(), a soflockup may occurr in swapin_walk_pmd_entry() if swapping in lots of memory on a slow device. Add a cond_resched() to avoid the possible softlockup. Link: https://lkml.kernel.org/r/[email protected] Fixes: 1998cc048901 ("mm: make madvise(MADV_WILLNEED) support swap file prefetch") Signed-off-by: Kefeng Wang <[email protected]> Cc: Shaohua Li <[email protected]> Cc: Hugh Dickins <[email protected]> Cc: Rik van Riel <[email protected]> Signed-off-by: Andrew Morton <[email protected]>
-rw-r--r--mm/madvise.c1
1 files changed, 1 insertions, 0 deletions
diff --git a/mm/madvise.c b/mm/madvise.c
index 2573ea3ed684..b7d9b1a1c135 100644
--- a/mm/madvise.c
+++ b/mm/madvise.c
@@ -223,6 +223,7 @@ static int swapin_walk_pmd_entry(pmd_t *pmd, unsigned long start,
put_page(page);
}
swap_read_unplug(splug);
+ cond_resched();
return 0;
}