⬢ DragonFlyBSD Kernel Audit
DF-3913 / fix.diff
← back to finding ↓ download raw
--- a/sys/dev/drm/i915/intel_sdvo.c
+++ b/sys/dev/drm/i915/intel_sdvo.c
@@ -2539,6 +2539,9 @@
 	}
 
 	if (intel_sdvo_connector_init(intel_sdvo_connector, intel_sdvo) < 0) {
+		drm_atomic_helper_connector_destroy_state(
+			&intel_sdvo_connector->base.base,
+			intel_sdvo_connector->base.base.state);
 		kfree(intel_sdvo_connector);
 		return false;
 	}
@@ -2572,6 +2575,9 @@
 	intel_sdvo_connector->output_flag = type;
 
 	if (intel_sdvo_connector_init(intel_sdvo_connector, intel_sdvo) < 0) {
+		drm_atomic_helper_connector_destroy_state(
+			&intel_sdvo_connector->base.base,
+			intel_sdvo_connector->base.base.state);
 		kfree(intel_sdvo_connector);
 		return false;
 	}
@@ -2618,6 +2624,9 @@
 	}
 
 	if (intel_sdvo_connector_init(intel_sdvo_connector, intel_sdvo) < 0) {
+		drm_atomic_helper_connector_destroy_state(
+			&intel_sdvo_connector->base.base,
+			intel_sdvo_connector->base.base.state);
 		kfree(intel_sdvo_connector);
 		return false;
 	}
@@ -2654,6 +2663,9 @@
 	}
 
 	if (intel_sdvo_connector_init(intel_sdvo_connector, intel_sdvo) < 0) {
+		drm_atomic_helper_connector_destroy_state(
+			&intel_sdvo_connector->base.base,
+			intel_sdvo_connector->base.base.state);
 		kfree(intel_sdvo_connector);
 		return false;
 	}