/* This is only useful when the bootmem allocator has already been torn down, but we are still initializing the system. Pages are given directly to the page allocator, no bootmem metadata is updated because it is gone.  */
void __init free_bootmem_late(unsigned long addr, unsigned long size)
/* This is only useful when the bootmem allocator has already been torn down, but we are still initializing the system. Pages are given directly to the page allocator, no bootmem metadata is updated because it is gone.  */
void __init free_bootmem_late(unsigned long addr, unsigned long size)
{
	unsigned long cursor, end;
	kmemleak_free_part(__va(addr), size);
	cursor = PFN_UP(addr);
	end = PFN_DOWN(addr + size);
	for (; cursor < end; cursor++) {
		__free_pages_bootmem(pfn_to_page(cursor), 0);
		totalram_pages++;
	}
}