Re: get_pageblock_bitmap() sometimes returns a NULL pointer which needs to be properly handled

Oscar Salvador
2024-05-06T10:43:03Z

On Mon, May 06, 2024 at 11:54:49AM +0200, David Hildenbrand wrote:
> But, could it be that we failing during compaction_alloc() [lr :
> compaction_alloc+0x220/0x804] and have an issue during
> set_pfnblock_flags_mask() on a page that sits on the isolated freelist?
> Similarly, memory hotunplug should not be able to mess up here.

But pageblock_flags is something that gets initialized at boot time and
never touched again (for already present sections).
There are two paths to get it:

section_to_usemap(__pfn_to_section(pfn))
or
page_zone(page)->pageblock_flags

Assuming the we somehow fail in compaction_alloc() and get a bad page or
NULL, we should crash before reaching to the point where we ask for
pageblock_flags.

--
Oscar Salvador
SUSE Labs