On Mon, 12 Oct 2026, Avi Weiss <[email protected]> wrote:
> If drm_edid_connector_update() fails, hdmi_get_modes() returns
> without freeing the EDID allocated by drm_edid_read_ddc(). It's
> an unlikely error path but nevertheless possible and should be
> cleaned up fully.
>
> Free the EDID before returning, while keeping the existing return
> value of 0.
>
> Fixes: f6e4f57fd90dc ("drm/exynos: hdmi: convert to struct drm_edid")
> Signed-off-by: Avi Weiss <[email protected]>
> ---
>  drivers/gpu/drm/exynos/exynos_hdmi.c | 4 +++-
>  1 file changed, 3 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/gpu/drm/exynos/exynos_hdmi.c 
> b/drivers/gpu/drm/exynos/exynos_hdmi.c
> index d4fce39c2b61..386557a7f5e8 100644
> --- a/drivers/gpu/drm/exynos/exynos_hdmi.c
> +++ b/drivers/gpu/drm/exynos/exynos_hdmi.c
> @@ -893,8 +893,10 @@ static int hdmi_get_modes(struct drm_connector 
> *connector)
>       drm_edid = drm_edid_read_ddc(connector, hdata->ddc_adpt);
>  
>       ret = drm_edid_connector_update(connector, drm_edid);

You could just move the drm_edid_free() call here to avoid duplicating
it.

> -     if (ret)
> +     if (ret) {
> +             drm_edid_free(drm_edid);
>               return 0;
> +     }
>  
>       cec_notifier_set_phys_addr(hdata->notifier, 
> info->source_physical_address);
>  
>
> base-commit: 24a19b953e2a3d0ea5a8c4951a0ab8f32720c907

-- 
Jani Nikula, Intel

Reply via email to