⬢ DragonFlyBSD Kernel Audit
DF-4932 / fix.diff
← back to finding ↓ download raw
--- a/sys/dev/drm/amd/display/dc/irq/dce110/irq_service_dce110.c
+++ b/sys/dev/drm/amd/display/dc/irq/dce110/irq_service_dce110.c
@@ -309,6 +309,12 @@
 	vblank_int_entry(3),
 	vblank_int_entry(4),
 	vblank_int_entry(5),
+	[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(),
 
 };
 
--- a/sys/dev/drm/amd/display/dc/irq/irq_service.c
+++ b/sys/dev/drm/amd/display/dc/irq/irq_service.c
@@ -115,6 +115,13 @@
 
 	dal_irq_service_ack(irq_service, source);
 
+	if (!info->funcs) {
+		DC_LOG_ERROR("%s: irq source %d has no funcs\n",
+			__func__,
+			source);
+		return false;
+	}
+
 	if (info->funcs->set)
 		return info->funcs->set(irq_service, info, enable);
 
@@ -147,6 +154,13 @@
 			__func__,
 			source);
 		return false;
+	}
+
+	if (!info->funcs) {
+		DC_LOG_ERROR("%s: irq source %d has no funcs\n",
+			__func__,
+			source);
+		return false;
 	}
 
 	if (info->funcs->ack)