diff options
author | Naoya Horiguchi <n-horiguchi@ah.jp.nec.com> | 2014-07-30 19:08:28 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2014-07-30 20:16:13 -0400 |
commit | 93a9eb39fad1b5fc9077776caa3af207883b254d (patch) | |
tree | 8090414d47460b63abcc563fee37013cc9f6c530 /mm | |
parent | 0193ed8225e1a79ed64632106ec3cc81798cb13c (diff) |
hwpoison: fix hugetlbfs/thp precheck in hwpoison_user_mappings()
A recent fix from Chen Yucong, commit 0bc1f8b0682c ("hwpoison: fix the
handling path of the victimized page frame that belong to non-LRU")
rejects going into unmapping operation for hugetlbfs/thp pages, which
results in failing error containing on such pages. This patch fixes it.
With this patch, hwpoison functional tests in mce-test testsuite pass.
Signed-off-by: Naoya Horiguchi <n-horiguchi@ah.jp.nec.com>
Cc: Andi Kleen <andi@firstfloor.org>
Cc: Chen Yucong <slaoub@gmail.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'mm')
-rw-r--r-- | mm/memory-failure.c | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/mm/memory-failure.c b/mm/memory-failure.c index 7211a73ba14d..3db261fdee4c 100644 --- a/mm/memory-failure.c +++ b/mm/memory-failure.c | |||
@@ -895,7 +895,13 @@ static int hwpoison_user_mappings(struct page *p, unsigned long pfn, | |||
895 | struct page *hpage = *hpagep; | 895 | struct page *hpage = *hpagep; |
896 | struct page *ppage; | 896 | struct page *ppage; |
897 | 897 | ||
898 | if (PageReserved(p) || PageSlab(p) || !PageLRU(p)) | 898 | /* |
899 | * Here we are interested only in user-mapped pages, so skip any | ||
900 | * other types of pages. | ||
901 | */ | ||
902 | if (PageReserved(p) || PageSlab(p)) | ||
903 | return SWAP_SUCCESS; | ||
904 | if (!(PageLRU(hpage) || PageHuge(p))) | ||
899 | return SWAP_SUCCESS; | 905 | return SWAP_SUCCESS; |
900 | 906 | ||
901 | /* | 907 | /* |