diff options
author | 2022-12-22 09:11:48 +0100 | |
---|---|---|
committer | 2022-12-22 09:11:48 +0100 | |
commit | 2d78eb0342dd2c9c5cde9ae9ada1d33f189a858b (patch) | |
tree | f711bc9cab45f4963e4883ef15ff4c54a6cbc12e /mm/memory-failure.c | |
parent | Merge tag 'asoc-fix-v6.1-rc7' of https://git.kernel.org/pub/scm/linux/kernel/git/broonie/sound into for-linus (diff) | |
parent | ALSA: hda/hdmi: fix stream-id config keep-alive for rt suspend (diff) | |
download | wireguard-linux-2d78eb0342dd2c9c5cde9ae9ada1d33f189a858b.tar.xz wireguard-linux-2d78eb0342dd2c9c5cde9ae9ada1d33f189a858b.zip |
Merge branch 'for-next' into for-linus
Diffstat (limited to '')
-rw-r--r-- | mm/memory-failure.c | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/mm/memory-failure.c b/mm/memory-failure.c index 145bb561ddb3..bead6bccc7f2 100644 --- a/mm/memory-failure.c +++ b/mm/memory-failure.c @@ -1080,6 +1080,7 @@ static int me_huge_page(struct page_state *ps, struct page *p) int res; struct page *hpage = compound_head(p); struct address_space *mapping; + bool extra_pins = false; if (!PageHuge(hpage)) return MF_DELAYED; @@ -1087,6 +1088,8 @@ static int me_huge_page(struct page_state *ps, struct page *p) mapping = page_mapping(hpage); if (mapping) { res = truncate_error_page(hpage, page_to_pfn(p), mapping); + /* The page is kept in page cache. */ + extra_pins = true; unlock_page(hpage); } else { unlock_page(hpage); @@ -1104,7 +1107,7 @@ static int me_huge_page(struct page_state *ps, struct page *p) } } - if (has_extra_refcount(ps, p, false)) + if (has_extra_refcount(ps, p, extra_pins)) res = MF_FAILED; return res; |