[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-ID: <20220421135129.19767-1-linmiaohe@huawei.com>
Date: Thu, 21 Apr 2022 21:51:28 +0800
From: Miaohe Lin <linmiaohe@...wei.com>
To: <akpm@...ux-foundation.org>, <david@...hat.com>
CC: <linux-mm@...ck.org>, <linux-kernel@...r.kernel.org>,
<linmiaohe@...wei.com>
Subject: [PATCH] mm/memory_hotplug: avoid consuming corrupted data when offline pages
When trying to offline pages, HWPoisoned hugepage is migrated without
checking PageHWPoison first. So corrupted data could be consumed. Fix
it by deferring isolate_huge_page until PageHWPoison is handled.
Signed-off-by: Miaohe Lin <linmiaohe@...wei.com>
---
mm/memory_hotplug.c | 11 +++++++----
1 file changed, 7 insertions(+), 4 deletions(-)
diff --git a/mm/memory_hotplug.c b/mm/memory_hotplug.c
index 4c6065e5d274..093f85ec5c5c 100644
--- a/mm/memory_hotplug.c
+++ b/mm/memory_hotplug.c
@@ -1600,11 +1600,9 @@ do_migrate_range(unsigned long start_pfn, unsigned long end_pfn)
folio = page_folio(page);
head = &folio->page;
- if (PageHuge(page)) {
+ if (PageHuge(page))
pfn = page_to_pfn(head) + compound_nr(head) - 1;
- isolate_huge_page(head, &source);
- continue;
- } else if (PageTransHuge(page))
+ else if (PageTransHuge(page))
pfn = page_to_pfn(head) + thp_nr_pages(page) - 1;
/*
@@ -1622,6 +1620,11 @@ do_migrate_range(unsigned long start_pfn, unsigned long end_pfn)
continue;
}
+ if (PageHuge(page)) {
+ isolate_huge_page(head, &source);
+ continue;
+ }
+
if (!get_page_unless_zero(page))
continue;
/*
--
2.23.0
Powered by blists - more mailing lists