Re: [PATCH v2] x86/efi: defer freeing of boot services memory

From: Ard Biesheuvel

Date: Fri Mar 06 2026 - 10:56:20 EST




On Fri, 6 Mar 2026, at 16:54, Mike Rapoport wrote:
> On Thu, Mar 05, 2026 at 12:11:12PM +0100, Ard Biesheuvel wrote:
>>
>> On Wed, 25 Feb 2026, at 07:55, Mike Rapoport wrote:
>> > From: "Mike Rapoport (Microsoft)" <rppt@xxxxxxxxxx>
>> >
>> > efi_free_boot_services() frees memory occupied by EFI_BOOT_SERVICES_CODE
>> > and EFI_BOOT_SERVICES_DATA using memblock_free_late().
>> >
>> > There are two issue with that: memblock_free_late() should be used for
>> > memory allocated with memblock_alloc() while the memory reserved with
>> > memblock_reserve() should be freed with free_reserved_area().
>> >
>> > More acutely, with CONFIG_DEFERRED_STRUCT_PAGE_INIT=y
>> > efi_free_boot_services() is called before deferred initialization of the
>> > memory map is complete.
>> >
>> > Benjamin Herrenschmidt reports that this causes a leak of ~140MB of
>> > RAM on EC2 t3a.nano instances which only have 512MB or RAM.
>> >
>>
>> Putting a fixes tag referencing a patch that dates back to 2011 doesn't
>> seem that useful here. Is this really an issue that goes all the way
>> back? Or did a later change trigger the actual leak?
>
> You are right, the leak was triggered later by addition of deferred
> initialization of struct pages which is about 4.2 time.
>
> So fixes tag is wrong indeed, but all the currently maintained stable
> versions are affected.
>

Fair enough. It's already in -next so I will just leave it as is.