In all of our various SDVO setup functions, we allocate an SDVO
connector (along with an associated connector->state) object, then
perform initialization.  If that initialization fails, we need to make
sure to free the state object as well as the connector.

Signed-off-by: Matt Roper <[email protected]>
---
 drivers/gpu/drm/i915/intel_sdvo.c | 8 ++++++++
 1 file changed, 8 insertions(+)

diff --git a/drivers/gpu/drm/i915/intel_sdvo.c 
b/drivers/gpu/drm/i915/intel_sdvo.c
index 06679f1..ff28867 100644
--- a/drivers/gpu/drm/i915/intel_sdvo.c
+++ b/drivers/gpu/drm/i915/intel_sdvo.c
@@ -2479,6 +2479,8 @@ intel_sdvo_dvi_init(struct intel_sdvo *intel_sdvo, int 
device)
        }
 
        if (intel_sdvo_connector_init(intel_sdvo_connector, intel_sdvo) < 0) {
+               drm_atomic_helper_connector_destroy_state(connector,
+                                                         connector->state);
                kfree(intel_sdvo_connector);
                return false;
        }
@@ -2514,6 +2516,8 @@ intel_sdvo_tv_init(struct intel_sdvo *intel_sdvo, int 
type)
        intel_sdvo->is_tv = true;
 
        if (intel_sdvo_connector_init(intel_sdvo_connector, intel_sdvo) < 0) {
+               drm_atomic_helper_connector_destroy_state(connector,
+                                                         connector->state);
                kfree(intel_sdvo_connector);
                return false;
        }
@@ -2561,6 +2565,8 @@ intel_sdvo_analog_init(struct intel_sdvo *intel_sdvo, int 
device)
        }
 
        if (intel_sdvo_connector_init(intel_sdvo_connector, intel_sdvo) < 0) {
+               drm_atomic_helper_connector_destroy_state(connector,
+                                                         connector->state);
                kfree(intel_sdvo_connector);
                return false;
        }
@@ -2596,6 +2602,8 @@ intel_sdvo_lvds_init(struct intel_sdvo *intel_sdvo, int 
device)
        }
 
        if (intel_sdvo_connector_init(intel_sdvo_connector, intel_sdvo) < 0) {
+               drm_atomic_helper_connector_destroy_state(connector,
+                                                         connector->state);
                kfree(intel_sdvo_connector);
                return false;
        }
-- 
2.1.4

_______________________________________________
Intel-gfx mailing list
[email protected]
http://lists.freedesktop.org/mailman/listinfo/intel-gfx

Reply via email to