|
|
Log in / Subscribe / Register

memblock: improve late freeing of reserved memory

From:  Mike Rapoport <rppt-AT-kernel.org>
To:  Andrew Morton <akpm-AT-linux-foundation.org>
Subject:  [PATCH v2 0/9] memblock: improve late freeing of reserved memory
Date:  Mon, 23 Mar 2026 09:48:27 +0200
Message-ID:  <20260323074836.3653702-1-rppt@kernel.org>
Cc:  Alexander Potapenko <glider-AT-google.com>, Alexander Viro <viro-AT-zeniv.linux.org.uk>, Andreas Larsson <andreas-AT-gaisler.com>, Ard Biesheuvel <ardb-AT-kernel.org>, Borislav Petkov <bp-AT-alien8.de>, Brendan Jackman <jackmanb-AT-google.com>, "Christophe Leroy (CS GROUP)" <chleroy-AT-kernel.org>, Catalin Marinas <catalin.marinas-AT-arm.com>, Christian Brauner <brauner-AT-kernel.org>, "David S. Miller" <davem-AT-davemloft.net>, Dave Hansen <dave.hansen-AT-linux.intel.com>, David Hildenbrand <david-AT-kernel.org>, Dmitry Vyukov <dvyukov-AT-google.com>, Ilias Apalodimas <ilias.apalodimas-AT-linaro.org>, Ingo Molnar <mingo-AT-redhat.com>, Jan Kara <jack-AT-suse.cz>, Johannes Weiner <hannes-AT-cmpxchg.org>, "Liam R. Howlett" <Liam.Howlett-AT-oracle.com>, Lorenzo Stoakes <lorenzo.stoakes-AT-oracle.com>, Madhavan Srinivasan <maddy-AT-linux.ibm.com>, Marco Elver <elver-AT-google.com>, Marek Szyprowski <m.szyprowski-AT-samsung.com>, Masami Hiramatsu <mhiramat-AT-kernel.org>, Michael Ellerman <mpe-AT-ellerman.id.au>, Michal Hocko <mhocko-AT-suse.com>, Mike Rapoport <rppt-AT-kernel.org>, Nicholas Piggin <npiggin-AT-gmail.com>, "H. Peter Anvin" <hpa-AT-zytor.com>, Rob Herring <robh-AT-kernel.org>, Robin Murphy <robin.murphy-AT-arm.com>, Saravana Kannan <saravanak-AT-kernel.org>, Suren Baghdasaryan <surenb-AT-google.com>, Thomas Gleixner <tglx-AT-kernel.org>, Vlastimil Babka <vbabka-AT-kernel.org>, Will Deacon <will-AT-kernel.org>, Zi Yan <ziy-AT-nvidia.com>, devicetree-AT-vger.kernel.org, iommu-AT-lists.linux.dev, kasan-dev-AT-googlegroups.com, linux-arm-kernel-AT-lists.infradead.org, linux-efi-AT-vger.kernel.org, linux-fsdevel-AT-vger.kernel.org, linux-kernel-AT-vger.kernel.org, linux-mm-AT-kvack.org, linux-trace-kernel-AT-vger.kernel.org, linuxppc-dev-AT-lists.ozlabs.org, sparclinux-AT-vger.kernel.org, x86-AT-kernel.org
Archive-link:  Article

From: "Mike Rapoport (Microsoft)" <rppt@kernel.org>

Hi,

Following a recent discussion about leaks in x86 EFI [1], I audited usage of
memblock_free_late() and free_reserved_area() and made some imporovements how
we handle late freeing of the memory allocated with memblock.

[1] https://lore.kernel.org/all/ec2aaef14783869b3be6e3c253b2d...

v2 changes:
* fix UAF issue in memblock_discard() reported by 0day and sashiko
* address relevant sashiko comments
* squash memblock test stubs changes into the commit with core updates

v1: https://lore.kernel.org/all/20260318105827.1358927-1-rppt...

Mike Rapoport (Microsoft) (9):
  memblock: reserve_mem: fix end caclulation in reserve_mem_release_by_name()
  powerpc: fadump: pair alloc_pages_exact() with free_pages_exact()
  powerpc: opal-core: pair alloc_pages_exact() with free_pages_exact()
  mm: move free_reserved_area() to mm/memblock.c
  memblock: make free_reserved_area() more robust
  memblock: extract page freeing from free_reserved_area() into a helper
  memblock: make free_reserved_area() update memblock if ARCH_KEEP_MEMBLOCK=y
  memblock, treewide: make memblock_free() handle late freeing
  memblock: warn when freeing reserved memory before memory map is initialized

 arch/arm64/mm/init.c                       |   3 -
 arch/powerpc/kernel/fadump.c               |  16 +--
 arch/powerpc/platforms/powernv/opal-core.c |  11 +-
 arch/sparc/kernel/mdesc.c                  |   4 +-
 arch/x86/kernel/setup.c                    |   2 +-
 arch/x86/platform/efi/memmap.c             |   5 +-
 arch/x86/platform/efi/quirks.c             |   2 +-
 drivers/firmware/efi/apple-properties.c    |   2 +-
 drivers/of/kexec.c                         |   2 +-
 include/linux/memblock.h                   |   2 -
 init/initramfs.c                           |   7 --
 kernel/dma/swiotlb.c                       |   6 +-
 lib/bootconfig.c                           |   2 +-
 mm/internal.h                              |  10 ++
 mm/kfence/core.c                           |   4 +-
 mm/memblock.c                              | 124 +++++++++++++++------
 mm/page_alloc.c                            |  46 --------
 tools/include/linux/mm.h                   |   1 +
 tools/testing/memblock/internal.h          |  34 +++++-
 19 files changed, 144 insertions(+), 139 deletions(-)


base-commit: 1f318b96cc84d7c2ab792fcc0bfd42a7ca890681
-- 
2.53.0




Copyright © 2026, Eklektix, Inc.
Comments and public postings are copyrighted by their creators.
Linux is a registered trademark of Linus Torvalds