lkml.org 
[lkml]   [2016]   [Mar]   [7]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH v2 2/5] drm/imx: dw_hdmi: Call drm_encoder_cleanup() in error path
    Date
    The drm_encoder_cleanup() was missing both from the error path of
    dw_hdmi_imx_bind(). This caused a crash when slub_debug was
    enabled and we ended up deferring probe of HDMI at boot.

    This call isn't needed from unbind() because if dw_hdmi_bind() returns
    no error then it takes over the job of freeing the encoder (in
    dw_hdmi_unbind).

    Signed-off-by: Douglas Anderson <dianders@chromium.org>
    ---
    Changes in v2:
    - IMX patch new in v2

    drivers/gpu/drm/imx/dw_hdmi-imx.c | 11 ++++++++++-
    1 file changed, 10 insertions(+), 1 deletion(-)

    diff --git a/drivers/gpu/drm/imx/dw_hdmi-imx.c b/drivers/gpu/drm/imx/dw_hdmi-imx.c
    index 2a95d10e9d92..c69c3142819c 100644
    --- a/drivers/gpu/drm/imx/dw_hdmi-imx.c
    +++ b/drivers/gpu/drm/imx/dw_hdmi-imx.c
    @@ -245,7 +245,16 @@ static int dw_hdmi_imx_bind(struct device *dev, struct device *master,
    drm_encoder_init(drm, encoder, &dw_hdmi_imx_encoder_funcs,
    DRM_MODE_ENCODER_TMDS, NULL);

    - return dw_hdmi_bind(dev, master, data, encoder, iores, irq, plat_data);
    + ret = dw_hdmi_bind(dev, master, data, encoder, iores, irq, plat_data);
    +
    + /*
    + * If dw_hdmi_bind() fails we'll never call dw_hdmi_unbind(),
    + * which would have called the encoder cleanup. Do it manually.
    + */
    + if (ret)
    + drm_encoder_cleanup(encoder);
    +
    + return ret;
    }

    static void dw_hdmi_imx_unbind(struct device *dev, struct device *master,
    --
    2.7.0.rc3.207.g0ac5344
    \
     
     \ /
      Last update: 2016-03-07 23:41    [W:8.112 / U:0.016 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site