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 <matthew.d.roper@xxxxxxxxx> --- 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 Intel-gfx@xxxxxxxxxxxxxxxxxxxxx http://lists.freedesktop.org/mailman/listinfo/intel-gfx