]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
drm/amd/display: bios_parser: fix GPIO I2C line off-by-one
authorPengpeng Hou <pengpeng@iscas.ac.cn>
Tue, 24 Mar 2026 08:51:30 +0000 (16:51 +0800)
committerAlex Deucher <alexander.deucher@amd.com>
Mon, 30 Mar 2026 18:39:18 +0000 (14:39 -0400)
get_gpio_i2c_info() computes the number of GPIO I2C assignment records
present in the BIOS table and then uses bfI2C_LineMux as an array index
into header->asGPIO_Info[]. The current check only rejects values
strictly larger than the record count, so an index equal to count still
falls through and reaches the fixed table one element past the end.

Reject indices at or above the number of available records before using
them as an array index.

Signed-off-by: Pengpeng Hou <pengpeng@iscas.ac.cn>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
drivers/gpu/drm/amd/display/dc/bios/bios_parser.c

index f947f82013c66616396d45eb4caac337c8b6e617..578ed0666438deb84e72ffb5dbdc6e19586bb155 100644 (file)
@@ -1963,7 +1963,7 @@ static enum bp_result get_gpio_i2c_info(struct bios_parser *bp,
        count = (le16_to_cpu(header->sHeader.usStructureSize)
                        - sizeof(ATOM_COMMON_TABLE_HEADER))
                                / sizeof(ATOM_GPIO_I2C_ASSIGMENT);
-       if (count < record->sucI2cId.bfI2C_LineMux)
+       if (count <= record->sucI2cId.bfI2C_LineMux)
                return BP_RESULT_BADBIOSTABLE;
 
        /* get the GPIO_I2C_INFO */