DF-4788 / fix.diff
--- a/sys/dev/drm/amd/display/dc/gpio/gpio_service.c +++ b/sys/dev/drm/amd/display/dc/gpio/gpio_service.c @@ -238,6 +238,11 @@ enum gpio_result dal_gpio_service_open( return GPIO_RESULT_OPEN_FAILED; } + /* the busyness bitmap is sized for number_of_pins[id] entries */ + if (en >= service->factory.number_of_pins[id]) { + ASSERT_CRITICAL(false); + return GPIO_RESULT_INVALID_DATA; + } + if (is_pin_busy(service, id, en)) { ASSERT_CRITICAL(false); return GPIO_RESULT_DEVICE_BUSY; } |