]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
drm/exynos/vidi: fix memory leak in .get_modes()
authorJani Nikula <jani.nikula@intel.com>
Thu, 30 May 2024 10:01:51 +0000 (13:01 +0300)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Fri, 5 Jul 2024 07:08:18 +0000 (09:08 +0200)
commit 38e3825631b1f314b21e3ade00b5a4d737eb054e upstream.

The duplicated EDID is never freed. Fix it.

Cc: stable@vger.kernel.org
Signed-off-by: Jani Nikula <jani.nikula@intel.com>
Signed-off-by: Inki Dae <inki.dae@samsung.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/gpu/drm/exynos/exynos_drm_vidi.c

index 46fc472be30685f1d82ad426ac0265c63e4065d4..8deafa5b5c0e0db155593306945291ece6076159 100644 (file)
@@ -301,6 +301,7 @@ static int vidi_get_modes(struct drm_connector *connector)
        struct vidi_context *ctx = ctx_from_connector(connector);
        struct edid *edid;
        int edid_len;
+       int count;
 
        /*
         * the edid data comes from user side and it would be set
@@ -320,7 +321,11 @@ static int vidi_get_modes(struct drm_connector *connector)
 
        drm_connector_update_edid_property(connector, edid);
 
-       return drm_add_edid_modes(connector, edid);
+       count = drm_add_edid_modes(connector, edid);
+
+       kfree(edid);
+
+       return count;
 }
 
 static const struct drm_connector_helper_funcs vidi_connector_helper_funcs = {