[Intel-gfx] [PATCH 1/2] drm/i915: Don't leak connector state on SDVO init failure
Daniel Vetter
daniel at ffwll.ch
Thu Dec 10 06:14:38 PST 2015
On Tue, Dec 08, 2015 at 02:48:51PM -0800, Matt Roper wrote:
> 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 at intel.com>
Where do we alloc connector->state in sdvo_connector_init()? I thought the
flow is 1) register all the kms objects with our pile of _init() functions
2) do hw readout, which is the thing which creates all these states.
None of the other connectors seem to have this issue (or at least I don't
see a patch for them).
-Daniel
> ---
> 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 at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/intel-gfx
--
Daniel Vetter
Software Engineer, Intel Corporation
http://blog.ffwll.ch
More information about the Intel-gfx
mailing list