drm/vc4: hdmi: Add missing clk_disable_unprepare on error path
authorMaxime Ripard <maxime@cerno.tech>
Fri, 2 Jul 2021 15:44:56 +0000 (17:44 +0200)
committerPhil Elwell <8911409+pelwell@users.noreply.github.com>
Fri, 2 Jul 2021 17:48:19 +0000 (18:48 +0100)
In vc4_hdmi_encoder_pre_crtc_configure, if clk_request_start for the HSM
clock fails, we don't call clk_disable_unprepare on the pixel clock even
though it's enabled by now.

Make sure it's there to avoid leaking that reference.

Fixes: cd4cb49dc5bb ("drm/vc4: hdmi: Adjust HSM clock rate depending on pixel rate")
Signed-off-by: Maxime Ripard <maxime@cerno.tech>
drivers/gpu/drm/vc4/vc4_hdmi.c

index 1f21430..1197d3b 100644 (file)
@@ -940,6 +940,7 @@ static void vc4_hdmi_encoder_pre_crtc_configure(struct drm_encoder *encoder,
        vc4_hdmi->hsm_req = clk_request_start(vc4_hdmi->hsm_clock, hsm_rate);
        if (IS_ERR(vc4_hdmi->hsm_req)) {
                DRM_ERROR("Failed to set HSM clock rate: %ld\n", PTR_ERR(vc4_hdmi->hsm_req));
+               clk_disable_unprepare(vc4_hdmi->pixel_clock);
                pm_runtime_put(&vc4_hdmi->pdev->dev);
                return;
        }