diff mbox series

[v5,2/2] mm/hwpoison: Add in-use hugepage hwpoison filter judgement

Message ID 20220223082254.2769757-1-luofei@unicloud.com (mailing list archive)
State New
Headers show
Series [v5,1/2] mm/hwpoison: Avoid the impact of hwpoison_filter() return value on mce handler | expand

Commit Message

luofei Feb. 23, 2022, 8:22 a.m. UTC
After successfully obtaining the reference count of the huge
page, it is still necessary to call hwpoison_filter() to make a
filter judgement, otherwise the filter hugepage will be unmaped
and the related process may be killed.

Signed-off-by: luofei <luofei@unicloud.com>
---
 mm/memory-failure.c | 8 ++++++++
 1 file changed, 8 insertions(+)
diff mbox series

Patch

diff --git a/mm/memory-failure.c b/mm/memory-failure.c
index 7e16d31df0f3..bad659092176 100644
--- a/mm/memory-failure.c
+++ b/mm/memory-failure.c
@@ -1547,6 +1547,14 @@  static int memory_failure_hugetlb(unsigned long pfn, int flags)
 	lock_page(head);
 	page_flags = head->flags;
 
+	if (hwpoison_filter(p)) {
+		if (TestClearPageHWPoison(head))
+			num_poisoned_pages_dec();
+		put_page(p);
+		res = -EOPNOTSUPP;
+		goto out;
+	}
+
 	/*
 	 * TODO: hwpoison for pud-sized hugetlb doesn't work right now, so
 	 * simply disable it. In order to make it work properly, we need