linux/drivers/firmware/efi
Kiryl Shutsemau (Meta) 9b18bf5997 efi: Fix reservation of unaccepted memory table
[ Upstream commit 0862438c90 ]

The reserve_unaccepted() function incorrectly calculates the size of the
memblock reservation for the unaccepted memory table. It aligns the
size of the table, but fails to account for cases where the table's
starting physical address (efi.unaccepted) is not page-aligned.

If the table starts at an offset within a page and its end crosses into
a subsequent page that the aligned size does not cover, the end of the
table will not be reserved. This can lead to the table being overwritten
or inaccessible, causing a kernel panic in accept_memory().

This issue was observed when starting Intel TDX VMs with specific memory
sizes (e.g., > 64GB).

Fix this by calculating the end address first (including the unaligned
start) and then aligning it up, ensuring the entire range is covered
by the reservation.

Fixes: 8dbe33956d ("efi/unaccepted: Make sure unaccepted table is mapped")
Reported-by: Moritz Sanft <ms@edgeless.systems>
Signed-off-by: Kiryl Shutsemau (Meta) <kas@kernel.org>
Reviewed-by: Tom Lendacky <thomas.lendacky@amd.com>
Acked-by: Mike Rapoport (Microsoft) <rppt@kernel.org>
Signed-off-by: Ard Biesheuvel <ardb@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
History 2026-02-26 14:59:44 -08:00
..
libstub efi/libstub: Fix page table access in 5-level to 4-level paging transition 2025-12-18 14:02:51 +01:00
stmm efi: stmm: Drop unneeded null pointer check 2025-08-26 14:49:42 +02:00
test efi/efi_test: Fix missing pending status update in getwakeuptime 2025-05-21 15:39:30 +02:00
apple-properties.c efi: fix return value of __setup handlers 2022-03-01 09:02:21 +01:00
arm-runtime.c efi: runtime: Fix potential overflow of soft-reserved region size 2024-02-02 19:31:24 +01:00
capsule-loader.c [tree-wide] finally take no_llseek out 2024-09-27 08:18:43 -07:00
capsule.c efi: capsule: clean scatter-gather entries from the D-cache 2020-12-09 08:37:27 +01:00
cper-arm.c efi/cper: align ARM CPER type with UEFI 2.9A/2.10 specs 2025-12-18 14:03:41 +01:00
cper-x86.c efi/cper: Fix cper_ia_proc_ctx alignment 2025-02-23 17:30:04 +01:00
cper.c efi/cper: Fix cper_bits_to_str buffer handling and return value 2026-01-23 11:21:12 +01:00
cper_cxl.c efi/cper, cxl: Remove cper_cxl.h 2025-02-06 11:27:16 -07:00
dev-path-parser.c driver core: Constify API device_find_child() and adapt for various usages 2025-01-03 11:19:35 +01:00
earlycon.c fbcon: Increase maximum font width x height to 64 x 128 2024-03-16 08:29:48 +01:00
efi-bgrt.c efi/bgrt: Accept BGRT tables with a version of 0 2020-02-22 23:37:37 +01:00
efi-init.c efi: support booting with kexec handover (KHO) 2025-09-13 17:32:57 -07:00
efi-pstore.c module: Convert symbol namespace to string literal 2024-12-02 11:34:44 -08:00
efi.c efi: Fix reservation of unaccepted memory table 2026-02-26 14:59:44 -08:00
efibc.c efi: efibc: change kmalloc(size * count, ...) to kmalloc_array() 2025-03-10 18:22:47 +01:00
embedded-firmware.c module: Convert symbol namespace to string literal 2024-12-02 11:34:44 -08:00
esrt.c efi/esrt: remove esre_attribute::store() 2024-12-13 08:43:58 +01:00
fdtparams.c move asm/unaligned.h to linux/unaligned.h 2024-10-02 17:23:23 -04:00
Kconfig efi: Explain OVMF acronym in OVMF_DEBUG_LOG help text 2025-08-29 19:02:04 +02:00
Makefile efi: add ovmf debug log driver 2025-07-09 20:31:38 +10:00
memattr.c efi/memattr: Ignore table if the size is clearly bogus 2024-11-15 12:03:29 +01:00
memmap.c efi: Improve logging around memmap init 2025-05-09 11:07:28 +02:00
mokvar-table.c sysfs: treewide: switch back to bin_attribute::read()/write() 2025-06-17 10:44:13 +02:00
ovmf-debug-log.c efi: add ovmf debug log driver 2025-07-09 20:31:38 +10:00
rci2-table.c efi: rci2: mark bin_attribute as __ro_after_init 2025-02-21 09:20:32 +01:00
reboot.c efi: Fix efi_power_off() not being run before acpi_power_off() when necessary 2022-07-10 17:41:06 +02:00
riscv-runtime.c riscv: dmi: Add SMBIOS/DMI support 2024-06-26 08:02:33 -07:00
runtime-wrappers.c efi: Add missing __nocfi annotations to runtime wrappers 2024-06-05 10:18:58 +02:00
sysfb_efi.c efi: sysfb_efi: fix W=1 warnings when EFI is not set 2025-01-14 08:35:28 +01:00
tpm.c tpm: fix unsigned/signed mismatch errors related to __calc_tpm2_event_size 2024-10-15 20:27:29 +02:00
unaccepted_memory.c mm: rework accept memory helpers 2024-09-01 20:26:07 -07:00
vars.c module: Convert symbol namespace to string literal 2024-12-02 11:34:44 -08:00