]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
drm/amdgpu/vcn: Fix double-free of vcn dump buffer
authorLijo Lazar <lijo.lazar@amd.com>
Tue, 5 Aug 2025 12:10:09 +0000 (17:40 +0530)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 15 Oct 2025 10:04:23 +0000 (12:04 +0200)
commit 1a0e57eb96c3fca338665ffd7d9b59f351e5fea7 upstream.

The buffer is already freed as part of amdgpu_vcn_reg_dump_fini(). The
issue is introduced by below patch series.

Fixes: de55cbff5ce9 ("drm/amdgpu/vcn: Add regdump helper functions")
Signed-off-by: Lijo Lazar <lijo.lazar@amd.com>
Reviewed-by: Sathishkumar S <sathishkumar.sundararaju@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/gpu/drm/amd/amdgpu/amdgpu_vcn.c
drivers/gpu/drm/amd/amdgpu/vcn_v3_0.c
drivers/gpu/drm/amd/amdgpu/vcn_v4_0_3.c
drivers/gpu/drm/amd/amdgpu/vcn_v4_0_5.c

index e5e40d10bb14bb0ec4ca4519bcae4ca0d5652348..affb68eabc4e1c82780dbe4a5b7352dfd9014468 100644 (file)
@@ -1573,6 +1573,7 @@ int amdgpu_vcn_reg_dump_init(struct amdgpu_device *adev,
 static void amdgpu_vcn_reg_dump_fini(struct amdgpu_device *adev)
 {
        kfree(adev->vcn.ip_dump);
+       adev->vcn.ip_dump = NULL;
        adev->vcn.reg_list = NULL;
        adev->vcn.reg_count = 0;
 }
index 2811226b0ea5dca92d8d4b55ac5f7956e76e72f7..866222fc10a05063ce7a1fd62b920675893e1842 100644 (file)
@@ -361,7 +361,6 @@ static int vcn_v3_0_sw_fini(struct amdgpu_ip_block *ip_block)
                        return r;
        }
 
-       kfree(adev->vcn.ip_dump);
        return 0;
 }
 
index 52613205669e16246c075568370c8449744694ea..ba944a96c0707cbceb01d995b78b08727cc4460c 100644 (file)
@@ -287,8 +287,6 @@ static int vcn_v4_0_3_sw_fini(struct amdgpu_ip_block *ip_block)
                        return r;
        }
 
-       kfree(adev->vcn.ip_dump);
-
        return 0;
 }
 
index caf2d95a85d433d45dcfa69e8fdc42d0356b861e..11fec716e846a2307956a9b4033c4287f660dd29 100644 (file)
@@ -284,8 +284,6 @@ static int vcn_v4_0_5_sw_fini(struct amdgpu_ip_block *ip_block)
                        return r;
        }
 
-       kfree(adev->vcn.ip_dump);
-
        return 0;
 }