[PATCH 0/1] VM_BUG_ON_PAGE(!zone_spans_pfn) in set_pfnblock_flags_mask

From: Andrea Arcangeli
Date: Sat Nov 21 2020 - 14:45:39 EST


Hello,

After hitting this twice on two different systems, I'm now running
with the tentative fix applied, but it's not a meaningful test since
it's non reproducible.

However it is possible to inject this bug if you do "grep E820
/proc/iomem" and then find a phys addr there with a struct page
(i.e. pfn_valid) in a zone, with this change:

min_pfn = pageblock_start_pfn(cc->free_pfn - (distance >> 1));
+ if (cc->zone is the zone where the e820 physaddr has a pfn_valid)
+ min_pfn = physaddr_of_E820_non_RAM_page_with_valid_pfn >> PAGE_SHIFT;

I didn't try to inject the bug to validate the fix and it'd be great
if someone can try that to validate this or any other fix.

Andrea Arcangeli (1):
mm: compaction: avoid fast_isolate_around() to set pageblock_skip on
reserved pages

mm/compaction.c | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)