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&#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&#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.
Impact
Base Score 3.x
5.50
Severity 3.x
MEDIUM
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:*:*:*:*:*:* |
To consult the complete list of CPE names with products and versions, see this page
References to Advisories, Solutions, and Tools
- https://git.kernel.org/stable/c/227688312fece0026fc67a00ba9a0b3611ebe95d
- https://git.kernel.org/stable/c/399da820ecfe6f4f10c143e5c453d3559a04db9c
- https://git.kernel.org/stable/c/4a2cb90c538f06c873a187aa743575d48685d7a6
- https://git.kernel.org/stable/c/6a25e25279282c5c8ade554c04c6ab9dc7902c64
- https://git.kernel.org/stable/c/6d8ba221e7aafaa2f284b7d22faee814c28e009d
- https://git.kernel.org/stable/c/7131bd1fecc749bc94fb44aae217bbd8a8a85264
- https://git.kernel.org/stable/c/7dcf59422a3b0d20ddda844f856b4a1e0608a326
- https://git.kernel.org/stable/c/a4b0bf6a40f3c107c67a24fbc614510ef5719980
- https://git.kernel.org/stable/c/f9e9cc320854a76a39e7bc92d144554f3a727fad



