Call pm_genpd_remove() to unregister from global list prior to releasing
acp_genpd memory, and clear the pointer after free.

Signed-off-by: Ce Sun <[email protected]>
---
 drivers/gpu/drm/amd/amdgpu/amdgpu_acp.c | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_acp.c 
b/drivers/gpu/drm/amd/amdgpu/amdgpu_acp.c
index c1307dfccf92..b0db0834bfff 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_acp.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_acp.c
@@ -559,7 +559,9 @@ static int acp_hw_fini(struct amdgpu_ip_block *ip_block)
        mfd_remove_devices(adev->acp.parent);
        kfree(adev->acp.i2s_pdata);
        kfree(adev->acp.acp_res);
+       pm_genpd_remove(&adev->acp.acp_genpd->gpd);
        kfree(adev->acp.acp_genpd);
+       adev->acp.acp_genpd = NULL;
        kfree(adev->acp.acp_cell);
 
        return 0;
-- 
2.34.1

Reply via email to