mm, hwpoison: check PageTable() explicitly in hwpoison_user_mappings()
authorMiaohe Lin <linmiaohe@huawei.com>
Tue, 30 Aug 2022 12:36:03 +0000 (20:36 +0800)
committerAndrew Morton <akpm@linux-foundation.org>
Tue, 27 Sep 2022 02:46:04 +0000 (19:46 -0700)
PageTable can't be handled by memory_failure(). Filter it out explicitly in
hwpoison_user_mappings(). This will also make code more consistent with the
relevant check in unpoison_memory().

Link: https://lkml.kernel.org/r/20220830123604.25763-6-linmiaohe@huawei.com
Signed-off-by: Miaohe Lin <linmiaohe@huawei.com>
Acked-by: Naoya Horiguchi <naoya.horiguchi@nec.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
mm/memory-failure.c

index cca8264dda1bbb68c3a02556e37184fe635dc7a4..3034078abe63362b4ada67f012ed56fc2ce8b169 100644 (file)
@@ -1409,7 +1409,7 @@ static bool hwpoison_user_mappings(struct page *p, unsigned long pfn,
         * Here we are interested only in user-mapped pages, so skip any
         * other types of pages.
         */
-       if (PageReserved(p) || PageSlab(p))
+       if (PageReserved(p) || PageSlab(p) || PageTable(p))
                return true;
        if (!(PageLRU(hpage) || PageHuge(p)))
                return true;