Skip to content

Commit 25ee3af

Browse files
committed
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: Mike Rapoport (Microsoft) <rppt@kernel.org>
1 parent c12c3e1 commit 25ee3af

1 file changed

Lines changed: 2 additions & 14 deletions

File tree

arch/powerpc/kernel/fadump.c

Lines changed: 2 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -775,24 +775,12 @@ void __init fadump_update_elfcore_header(char *bufp)
775775

776776
static void *__init fadump_alloc_buffer(unsigned long size)
777777
{
778-
unsigned long count, i;
779-
struct page *page;
780-
void *vaddr;
781-
782-
vaddr = alloc_pages_exact(size, GFP_KERNEL | __GFP_ZERO);
783-
if (!vaddr)
784-
return NULL;
785-
786-
count = PAGE_ALIGN(size) / PAGE_SIZE;
787-
page = virt_to_page(vaddr);
788-
for (i = 0; i < count; i++)
789-
mark_page_reserved(page + i);
790-
return vaddr;
778+
return alloc_pages_exact(size, GFP_KERNEL | __GFP_ZERO);
791779
}
792780

793781
static void fadump_free_buffer(unsigned long vaddr, unsigned long size)
794782
{
795-
free_reserved_area((void *)vaddr, (void *)(vaddr + size), -1, NULL);
783+
free_pages_exact((void *)vaddr, size);
796784
}
797785

798786
s32 __init fadump_setup_cpu_notes_buf(u32 num_cpus)

0 commit comments

Comments
 (0)