⬢ DragonFlyBSD Kernel Audit
DF-5054 / fix.diff
← back to finding ↓ download raw
--- a/sys/dev/drm/amd/display/dc/irq/dce80/irq_service_dce80.c
+++ b/sys/dev/drm/amd/display/dc/irq/dce80/irq_service_dce80.c
@@ -271,6 +271,18 @@
 	vblank_int_entry(3),
 	vblank_int_entry(4),
 	vblank_int_entry(5),
+	/* DF-5054 (DF-2168/DF-4932/DF-4995 family): the shared enum runs to
+	 * DAL_IRQ_SOURCES_NUMBER=90 but the designators above stop at
+	 * DC_IRQ_SOURCE_VBLANK6=83; DC_IRQ_SOURCE_DC{1..6}_VLINE0 (84..89)
+	 * stayed zero-initialized (.funcs == NULL) and dal_irq_service_set/
+	 * ack dereference info->funcs unguarded (irq_service.c:118/:152).
+	 * Make the table total over the shared enum. */
+	[DC_IRQ_SOURCE_DC1_VLINE0] = dummy_irq_entry(),
+	[DC_IRQ_SOURCE_DC2_VLINE0] = dummy_irq_entry(),
+	[DC_IRQ_SOURCE_DC3_VLINE0] = dummy_irq_entry(),
+	[DC_IRQ_SOURCE_DC4_VLINE0] = dummy_irq_entry(),
+	[DC_IRQ_SOURCE_DC5_VLINE0] = dummy_irq_entry(),
+	[DC_IRQ_SOURCE_DC6_VLINE0] = dummy_irq_entry(),
 };
 
 static const struct irq_service_funcs irq_service_funcs_dce80 = {