]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
drm/mediatek/dp: Fix spurious kfree()
authorMichael Walle <mwalle@kernel.org>
Tue, 4 Jun 2024 08:33:37 +0000 (10:33 +0200)
committerChun-Kuang Hu <chunkuang.hu@kernel.org>
Fri, 28 Jun 2024 13:01:43 +0000 (13:01 +0000)
drm_edid_to_sad() might return an error or just zero. If that is the
case, we must not free the SADs because there was no allocation in
the first place.

Fixes: dab12fa8d2bd ("drm/mediatek/dp: fix memory leak on ->get_edid callback audio detection")
Signed-off-by: Michael Walle <mwalle@kernel.org>
Reviewed-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
Reviewed-by: Jani Nikula <jani.nikula@intel.com>
Link: https://patchwork.kernel.org/project/linux-mediatek/patch/20240604083337.1879188-1-mwalle@kernel.org/
Signed-off-by: Chun-Kuang Hu <chunkuang.hu@kernel.org>
drivers/gpu/drm/mediatek/mtk_dp.c

index ed335d888b2f5e9e156d106e8f4018a0ed79a6ae..d8796a904eca4ddff5a98bf7fa368ec4018808e9 100644 (file)
@@ -2073,9 +2073,15 @@ static const struct drm_edid *mtk_dp_edid_read(struct drm_bridge *bridge,
                 */
                const struct edid *edid = drm_edid_raw(drm_edid);
                struct cea_sad *sads;
+               int ret;
 
-               audio_caps->sad_count = drm_edid_to_sad(edid, &sads);
-               kfree(sads);
+               ret = drm_edid_to_sad(edid, &sads);
+               /* Ignore any errors */
+               if (ret < 0)
+                       ret = 0;
+               if (ret)
+                       kfree(sads);
+               audio_caps->sad_count = ret;
 
                /*
                 * FIXME: This should use connector->display_info.has_audio from