CVE-2026-23352

Severity CVSS v4.0:
Pending analysis
Type:
Unavailable / Other
Publication date:
25/03/2026
Last modified:
24/04/2026

Description

In the Linux kernel, the following vulnerability has been resolved:<br /> <br /> x86/efi: defer freeing of boot services memory<br /> <br /> efi_free_boot_services() frees memory occupied by EFI_BOOT_SERVICES_CODE<br /> and EFI_BOOT_SERVICES_DATA using memblock_free_late().<br /> <br /> There are two issue with that: memblock_free_late() should be used for<br /> memory allocated with memblock_alloc() while the memory reserved with<br /> memblock_reserve() should be freed with free_reserved_area().<br /> <br /> More acutely, with CONFIG_DEFERRED_STRUCT_PAGE_INIT=y<br /> efi_free_boot_services() is called before deferred initialization of the<br /> memory map is complete.<br /> <br /> Benjamin Herrenschmidt reports that this causes a leak of ~140MB of<br /> RAM on EC2 t3a.nano instances which only have 512MB or RAM.<br /> <br /> If the freed memory resides in the areas that memory map for them is<br /> still uninitialized, they won&amp;#39;t be actually freed because<br /> memblock_free_late() calls memblock_free_pages() and the latter skips<br /> uninitialized pages.<br /> <br /> Using free_reserved_area() at this point is also problematic because<br /> __free_page() accesses the buddy of the freed page and that again might<br /> end up in uninitialized part of the memory map.<br /> <br /> Delaying the entire efi_free_boot_services() could be problematic<br /> because in addition to freeing boot services memory it updates<br /> efi.memmap without any synchronization and that&amp;#39;s undesirable late in<br /> boot when there is concurrency.<br /> <br /> More robust approach is to only defer freeing of the EFI boot services<br /> memory.<br /> <br /> Split efi_free_boot_services() in two. First efi_unmap_boot_services()<br /> collects ranges that should be freed into an array then<br /> efi_free_boot_services() later frees them after deferred init is complete.

Vulnerable products and versions

CPE From Up to
cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* 3.0.1 (including) 5.10.253 (excluding)
cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* 5.11 (including) 5.15.203 (excluding)
cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* 5.16 (including) 6.1.167 (excluding)
cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* 6.2 (including) 6.6.130 (excluding)
cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* 6.7 (including) 6.12.77 (excluding)
cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* 6.13 (including) 6.18.17 (excluding)
cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* 6.19 (including) 6.19.7 (excluding)
cpe:2.3:o:linux:linux_kernel:2.6.39.1:*:*:*:*:*:*:*
cpe:2.3:o:linux:linux_kernel:3.0:-:*:*:*:*:*:*
cpe:2.3:o:linux:linux_kernel:7.0:rc1:*:*:*:*:*:*
cpe:2.3:o:linux:linux_kernel:7.0:rc2:*:*:*:*:*:*
cpe:2.3:o:linux:linux_kernel:7.0:rc3:*:*:*:*:*:*
cpe:2.3:o:linux:linux_kernel:7.0:rc4:*:*:*:*:*:*
cpe:2.3:o:linux:linux_kernel:7.0:rc5:*:*:*:*:*:*
cpe:2.3:o:linux:linux_kernel:7.0:rc6:*:*:*:*:*:*