|
@@ -1146,8 +1146,11 @@ int memory_failure(unsigned long pfn, int trapno, int flags)
|
|
}
|
|
}
|
|
|
|
|
|
if (!PageHuge(p) && PageTransHuge(hpage)) {
|
|
if (!PageHuge(p) && PageTransHuge(hpage)) {
|
|
- if (unlikely(split_huge_page(hpage))) {
|
|
|
|
- pr_err("MCE: %#lx: thp split failed\n", pfn);
|
|
|
|
|
|
+ if (!PageAnon(hpage) || unlikely(split_huge_page(hpage))) {
|
|
|
|
+ if (!PageAnon(hpage))
|
|
|
|
+ pr_err("MCE: %#lx: non anonymous thp\n", pfn);
|
|
|
|
+ else
|
|
|
|
+ pr_err("MCE: %#lx: thp split failed\n", pfn);
|
|
if (TestClearPageHWPoison(p))
|
|
if (TestClearPageHWPoison(p))
|
|
atomic_long_sub(nr_pages, &num_poisoned_pages);
|
|
atomic_long_sub(nr_pages, &num_poisoned_pages);
|
|
put_page(p);
|
|
put_page(p);
|