linux/drivers/firmware/efi
Mauro Carvalho Chehab 25b290624b EFI/CPER: don't go past the ARM processor CPER record buffer
[ Upstream commit eae21beecb ]

There's a logic inside GHES/CPER to detect if the section_length
is too small, but it doesn't detect if it is too big.

Currently, if the firmware receives an ARM processor CPER record
stating that a section length is big, kernel will blindly trust
section_length, producing a very long dump. For instance, a 67
bytes record with ERR_INFO_NUM set 46198 and section length
set to 854918320 would dump a lot of data going a way past the
firmware memory-mapped area.

Fix it by adding a logic to prevent it to go past the buffer
if ERR_INFO_NUM is too big, making it report instead:

	[Hardware Error]: Hardware error from APEI Generic Hardware Error Source: 1
	[Hardware Error]: event severity: recoverable
	[Hardware Error]:  Error 0, type: recoverable
	[Hardware Error]:   section_type: ARM processor error
	[Hardware Error]:   MIDR: 0xff304b2f8476870a
	[Hardware Error]:   section length: 854918320, CPER size: 67
	[Hardware Error]:   section length is too big
	[Hardware Error]:   firmware-generated error record is incorrect
	[Hardware Error]:   ERR_INFO_NUM is 46198

Signed-off-by: Mauro Carvalho Chehab <mchehab+huawei@kernel.org>
Reviewed-by: Jonathan Cameron <jonathan.cameron@huawei.com>
Acked-by: Ard Biesheuvel <ardb@kernel.org>
Reviewed-by: Hanjun Guo <guohanjun@huawei.com>
[ rjw: Subject and changelog tweaks ]
Link: https://patch.msgid.link/41cd9f6b3ace3cdff7a5e864890849e4b1c58b63.1767871950.git.mchehab+huawei@kernel.org
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
History 2026-03-04 07:19:35 -05: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: don't go past the ARM processor CPER record buffer 2026-03-04 07:19:35 -05:00
cper-x86.c efi/cper: Fix cper_ia_proc_ctx alignment 2025-02-23 17:30:04 +01:00
cper.c EFI/CPER: don't go past the ARM processor CPER record buffer 2026-03-04 07:19:35 -05: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