Re: [PATCH v3 08/10] ACPI: APEI: GHES: Validate memory error section length before payload access
Alison Schofield <[email protected]>
| Newsgroups | org.kernel.vger.linux-acpi,org.kernel.vger.linux-cxl |
|---|---|
| Message-ID | <[email protected]> |
On Fri, Jul 17, 2026 at 09:16:45AM -0700, Dave Jiang wrote: > sashiko-bot flagged that the memory error length check was placed too > late, leaving the other payload consumers unprotected. > > ghes_do_proc() hands the CPER_SEC_PLATFORM_MEM payload to the report > chain, arch_apei_report_mem_error() and ghes_handle_memory_failure() > without checking gdata->error_data_length. These read validation_bits > and physical_addr (offsets 0 and 16), so a shorter section reads past the > record. > > Validate error_data_length once in ghes_do_proc(), before any consumer > runs, so every consumer is covered. Bound against struct > cper_sec_mem_err_old (the UEFI 2.1/2.2 layout) rather than the full > struct: the section length is authoritative, older firmware legitimately > emits the shorter record, and the trailing fields, though packed > unconditionally by cper_mem_err_pack(), are only acted on under > validation bits that a short record leaves clear. This matches the lower > bound already used in drivers/firmware/efi/cper.c. > > A malformed sub-record no longer reaches ghes_handle_memory_failure(). > > Reported-by: [email protected] > Closes: https://sashiko.dev/#/patchset/[email protected]?part=7 > Fixes: ca104edc1784 ("ACPI, APEI, GHES: Cleanup ghes memory error handling") > Assisted-by: Claude:claude-opus-4-8 > Signed-off-by: Dave Jiang <[email protected]> Reviewed-by: Alison Schofield <[email protected]>