]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
drm/amd/display: Fix drm_edid leak in amdgpu_dm
authorAlex Hung <alex.hung@amd.com>
Mon, 9 Mar 2026 17:16:08 +0000 (11:16 -0600)
committerAlex Deucher <alexander.deucher@amd.com>
Mon, 23 Mar 2026 18:14:59 +0000 (14:14 -0400)
[WHAT]
When a sink is connected, aconnector->drm_edid was overwritten without
freeing the previous allocation, causing a memory leak on resume.

[HOW]
Free the previous drm_edid before updating it.

Reviewed-by: Roman Li <roman.li@amd.com>
Signed-off-by: Alex Hung <alex.hung@amd.com>
Signed-off-by: Chuanyu Tseng <chuanyu.tseng@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c

index 1e010d095f061eaac6ce7f2173dc3049b090d913..35c8666b23dc684242b7a2c0feb2de195d3a64be 100644 (file)
@@ -3994,8 +3994,9 @@ void amdgpu_dm_update_connector_after_detect(
 
                aconnector->dc_sink = sink;
                dc_sink_retain(aconnector->dc_sink);
+               drm_edid_free(aconnector->drm_edid);
+               aconnector->drm_edid = NULL;
                if (sink->dc_edid.length == 0) {
-                       aconnector->drm_edid = NULL;
                        hdmi_cec_unset_edid(aconnector);
                        if (aconnector->dc_link->aux_mode) {
                                drm_dp_cec_unset_edid(&aconnector->dm_dp_aux.aux);