drm/amdgpu: fix potential memory leak during navi12 deinitialization
Navi12 HDCP & DTM deinitialization needs continue to free bo if already created though initialized flag is not set. Reviewed-by: Alex Deucher <alexander.deucher@amd.com> Signed-off-by: Jiawei Gu <Jiawei.Gu@amd.com> Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
This commit is contained in:
@@ -1315,8 +1315,12 @@ static int psp_hdcp_terminate(struct psp_context *psp)
|
|||||||
if (amdgpu_sriov_vf(psp->adev))
|
if (amdgpu_sriov_vf(psp->adev))
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
if (!psp->hdcp_context.hdcp_initialized)
|
if (!psp->hdcp_context.hdcp_initialized) {
|
||||||
|
if (psp->hdcp_context.hdcp_shared_buf)
|
||||||
|
goto out;
|
||||||
|
else
|
||||||
return 0;
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
ret = psp_hdcp_unload(psp);
|
ret = psp_hdcp_unload(psp);
|
||||||
if (ret)
|
if (ret)
|
||||||
@@ -1324,6 +1328,7 @@ static int psp_hdcp_terminate(struct psp_context *psp)
|
|||||||
|
|
||||||
psp->hdcp_context.hdcp_initialized = false;
|
psp->hdcp_context.hdcp_initialized = false;
|
||||||
|
|
||||||
|
out:
|
||||||
/* free hdcp shared memory */
|
/* free hdcp shared memory */
|
||||||
amdgpu_bo_free_kernel(&psp->hdcp_context.hdcp_shared_bo,
|
amdgpu_bo_free_kernel(&psp->hdcp_context.hdcp_shared_bo,
|
||||||
&psp->hdcp_context.hdcp_shared_mc_addr,
|
&psp->hdcp_context.hdcp_shared_mc_addr,
|
||||||
@@ -1462,8 +1467,12 @@ static int psp_dtm_terminate(struct psp_context *psp)
|
|||||||
if (amdgpu_sriov_vf(psp->adev))
|
if (amdgpu_sriov_vf(psp->adev))
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
if (!psp->dtm_context.dtm_initialized)
|
if (!psp->dtm_context.dtm_initialized) {
|
||||||
|
if (psp->dtm_context.dtm_shared_buf)
|
||||||
|
goto out;
|
||||||
|
else
|
||||||
return 0;
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
ret = psp_dtm_unload(psp);
|
ret = psp_dtm_unload(psp);
|
||||||
if (ret)
|
if (ret)
|
||||||
@@ -1471,6 +1480,7 @@ static int psp_dtm_terminate(struct psp_context *psp)
|
|||||||
|
|
||||||
psp->dtm_context.dtm_initialized = false;
|
psp->dtm_context.dtm_initialized = false;
|
||||||
|
|
||||||
|
out:
|
||||||
/* free hdcp shared memory */
|
/* free hdcp shared memory */
|
||||||
amdgpu_bo_free_kernel(&psp->dtm_context.dtm_shared_bo,
|
amdgpu_bo_free_kernel(&psp->dtm_context.dtm_shared_bo,
|
||||||
&psp->dtm_context.dtm_shared_mc_addr,
|
&psp->dtm_context.dtm_shared_mc_addr,
|
||||||
|
|||||||
Reference in New Issue
Block a user