--- a/sys/dev/drm/radeon/radeon_atombios.c +++ b/sys/dev/drm/radeon/radeon_atombios.c @@ -173,6 +173,11 @@ void radeon_atombios_i2c_init(struct radeon_device *rdev) num_indices = (size - sizeof(ATOM_COMMON_TABLE_HEADER)) / sizeof(ATOM_GPIO_I2C_ASSIGMENT); + if (num_indices > RADEON_MAX_I2C_BUS) { + DRM_ERROR("ATOM GPIO I2C table has too many entries (%d)\n", + num_indices); + num_indices = RADEON_MAX_I2C_BUS; + } gpio = &i2c_info->asGPIO_Info[0]; for (i = 0; i < num_indices; i++) { radeon_lookup_i2c_gpio_quirks(rdev, gpio, i);