[PATCH v2 0/3] ACPI: RIMT: validate nested firmware extents
Pengpeng Hou
pengpeng at iscas.ac.cn
Thu Aug 13 08:38:51 PDT 2026
RIMT consumers trust three separate layers of firmware data: the root
node area, the payload and arrays contained in each node, and cross-node
ID mappings. Validating only the outer table does not establish the
bounds of either nested layer.
Split the validation by contract. Patch 1 validates the root and node
envelopes while preserving unknown-node traversal. Patch 2 validates
supported node payloads, arrays and the platform-device string. Patch 3
validates exact destination-node references, mapping depth and ID
arithmetic.
Changes since v1:
https://lore.kernel.org/all/20260706094414.82794-1-pengpeng@iscas.ac.cn/
- split root, node-data and mapping-reference validation
- preserve unknown-node traversal compatibility
- require destination offsets to match exact node boundaries
- treat num_ids as a count, as specified by the RIMT definition
- keep the existing unchanged-ID result on mapping failure
Testing used Linux 3d6d817622b0 plus this series, GCC 13.3 and QEMU
8.2.2 for riscv64. A temporary KUnit harness in rimt.c called the
actual static validation helpers; the harness is not part of this
series. The acpi_rimt_bounds suite passed all three tests, covering
truncated table and node extents, invalid payload and array extents,
unterminated device names, interior node references, ID range and
addition errors, and a cyclic mapping chain.
This did not exercise a platform-provided RIMT table through the complete
boot-time discovery path.
Pengpeng Hou (3):
ACPI: RIMT: validate table and node extents before traversal
ACPI: RIMT: validate node payload and array extents
ACPI: RIMT: validate mapping references and ID arithmetic
drivers/acpi/riscv/rimt.c | 239 ++++++++++++++++++++++++++++++++++----
1 file changed, 219 insertions(+), 20 deletions(-)
base-commit: 3d6d817622b0a9721e3cc404df3469171582be13
--
2.50.1 (Apple Git-155)
More information about the linux-riscv
mailing list