⬢ DragonFlyBSD Kernel Audit
DF-4788 / fix.diff
← back to finding ↓ download raw
--- 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;
 	}