]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
drm/amd/display: Fix double free
authorIlya Bakoulin <Ilya.Bakoulin@amd.com>
Tue, 7 Apr 2026 19:01:00 +0000 (15:01 -0400)
committerAlex Deucher <alexander.deucher@amd.com>
Fri, 17 Apr 2026 19:41:15 +0000 (15:41 -0400)
[Why/How]
Reset pointer/address to avoid double free.

Reviewed-by: Sridevi Arvindekar <sridevi.arvindekar@amd.com>
Signed-off-by: Ilya Bakoulin <Ilya.Bakoulin@amd.com>
Signed-off-by: Chenyu Chen <chen-yu.chen@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
drivers/gpu/drm/amd/display/dc/clk_mgr/dcn42/dcn42_clk_mgr.c

index 72b0f3f8c2fd5af52eb667b6b9c7280328663e8c..e39fd97b3ffda9d631c7c920d4f2b0a730edc4fe 100644 (file)
@@ -736,9 +736,12 @@ void dcn42_notify_wm_ranges(struct clk_mgr *clk_mgr_base)
                        clk_mgr_dcn42->smu_wm_set.mc_address.low_part);
        dcn42_smu_transfer_wm_table_dram_2_smu(clk_mgr);
 
-       if (clk_mgr_dcn42->smu_wm_set.wm_set && clk_mgr_dcn42->smu_wm_set.mc_address.quad_part != 0)
+       if (clk_mgr_dcn42->smu_wm_set.wm_set && clk_mgr_dcn42->smu_wm_set.mc_address.quad_part != 0) {
                dm_helpers_free_gpu_mem(clk_mgr->base.ctx, DC_MEM_ALLOC_TYPE_GART,
                                clk_mgr_dcn42->smu_wm_set.wm_set);
+               clk_mgr_dcn42->smu_wm_set.wm_set = NULL;
+               clk_mgr_dcn42->smu_wm_set.mc_address.quad_part = 0;
+       }
 
 }
 
@@ -1101,7 +1104,10 @@ void dcn42_clk_mgr_destroy(struct clk_mgr_internal *clk_mgr_int)
 {
        struct clk_mgr_dcn42 *clk_mgr = TO_CLK_MGR_DCN42(clk_mgr_int);
 
-       if (clk_mgr->smu_wm_set.wm_set && clk_mgr->smu_wm_set.mc_address.quad_part != 0)
+       if (clk_mgr->smu_wm_set.wm_set && clk_mgr->smu_wm_set.mc_address.quad_part != 0) {
                dm_helpers_free_gpu_mem(clk_mgr_int->base.ctx, DC_MEM_ALLOC_TYPE_GART,
                                clk_mgr->smu_wm_set.wm_set);
+               clk_mgr->smu_wm_set.wm_set = NULL;
+               clk_mgr->smu_wm_set.mc_address.quad_part = 0;
+       }
 }