Commit 25ee3aff authored by Mike Rapoport (Microsoft)'s avatar Mike Rapoport (Microsoft)
Browse files

powerpc: fadump: pair alloc_pages_exact() with free_pages_exact()

fadump allocates buffers with alloc_pages_exact(), but then marks them
as reserved and frees using free_reserved_area().

This is completely unnecessary and the pages allocated with
alloc_pages_exact() can be naturally freed with free_pages_exact().

Replace freeing of memory in fadump_free_buffer() with
free_pages_exact() and simplify allocation code so that it won't mark
allocated pages as reserved.

Link: https://patch.msgid.link/20260323074836.3653702-3-rppt@kernel.org


Signed-off-by: default avatarMike Rapoport (Microsoft) <rppt@kernel.org>
parent c12c3e15
Loading
Loading
Loading
Loading
+2 −14
Original line number Diff line number Diff line
@@ -775,24 +775,12 @@ void __init fadump_update_elfcore_header(char *bufp)

static void *__init fadump_alloc_buffer(unsigned long size)
{
	unsigned long count, i;
	struct page *page;
	void *vaddr;

	vaddr = alloc_pages_exact(size, GFP_KERNEL | __GFP_ZERO);
	if (!vaddr)
		return NULL;

	count = PAGE_ALIGN(size) / PAGE_SIZE;
	page = virt_to_page(vaddr);
	for (i = 0; i < count; i++)
		mark_page_reserved(page + i);
	return vaddr;
	return  alloc_pages_exact(size, GFP_KERNEL | __GFP_ZERO);
}

static void fadump_free_buffer(unsigned long vaddr, unsigned long size)
{
	free_reserved_area((void *)vaddr, (void *)(vaddr + size), -1, NULL);
	free_pages_exact((void *)vaddr, size);
}

s32 __init fadump_setup_cpu_notes_buf(u32 num_cpus)