CVE-2026-64097: drm/amd/display: Validate GPIO pin LUT table size before iterating
In the Linux kernel, the following vulnerability has been resolved:
drm/amd/display: Validate GPIO pin LUT table size before iterating
[Why&How] The GPIO pin table parsers in getgpioi2cinfo() and biosparsergetgpiopininfo() derive an element count from the VBIOS tableheader.structuresize field, then iterate over gpiopin[] entries. However, GETIMAGE() only validates that the table header itself fits within the BIOS image. If the VBIOS reports a structuresize larger than the actual mapped data, the loop reads past the end of the BIOS image, causing an out-of-bounds read.
Fix this by calling biosgetimage() to validate that the full claimed structuresize is accessible within the BIOS image before entering the loop in both functions.
(cherry picked from commit ba5e95b43b773ae1bf1f66ee6b31eb774e65afe3)
Affected Software
Remediation
Event History
Frequently Asked Questions
Who is exposed to this issue?
Systems running the Linux kernel code path that parses AMD display GPIO pin tables from VBIOS are relevant. The supplied CVSS vector indicates local access with low privileges is required; no user interaction is required.
What condition triggers the out-of-bounds read?
The VBIOS GPIO pin table must claim a structuresize larger than the data actually available in the mapped BIOS image. The vulnerable parsers use that claimed size to iterate GPIO pin entries without first validating that the full table is accessible.
What should be done if systems may be affected?
Apply an available patch. The fix validates the full VBIOS table structuresize with bios_get_image() before either affected function iterates over GPIO pin entries.