[PATCH] drm/amdgpu: fix potential memory leak during navi12 deinitialization

Alex Deucher alexdeucher at gmail.com
Mon Jan 4 16:49:41 UTC 2021


On Thu, Dec 31, 2020 at 4:06 AM Jiawei Gu <Jiawei.Gu at amd.com> wrote:
>
> Navi12 HDCP & DTM deinitialization needs continue to free bo if already
> created though initialized flag is not set.
>
> Signed-off-by: Jiawei Gu <Jiawei.Gu at amd.com>

Reviewed-by: Alex Deucher <alexander.deucher at amd.com>

> ---
>  drivers/gpu/drm/amd/amdgpu/amdgpu_psp.c | 18 ++++++++++++++----
>  1 file changed, 14 insertions(+), 4 deletions(-)
>
> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_psp.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_psp.c
> index b44b46dd60f2..4956fbd512d9 100644
> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_psp.c
> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_psp.c
> @@ -1316,8 +1316,12 @@ static int psp_hdcp_terminate(struct psp_context *psp)
>         if (amdgpu_sriov_vf(psp->adev))
>                 return 0;
>
> -       if (!psp->hdcp_context.hdcp_initialized)
> -               return 0;
> +       if (!psp->hdcp_context.hdcp_initialized) {
> +               if (psp->hdcp_context.hdcp_shared_buf)
> +                       goto out;
> +               else
> +                       return 0;
> +       }
>
>         ret = psp_hdcp_unload(psp);
>         if (ret)
> @@ -1325,6 +1329,7 @@ static int psp_hdcp_terminate(struct psp_context *psp)
>
>         psp->hdcp_context.hdcp_initialized = false;
>
> +out:
>         /* free hdcp shared memory */
>         amdgpu_bo_free_kernel(&psp->hdcp_context.hdcp_shared_bo,
>                               &psp->hdcp_context.hdcp_shared_mc_addr,
> @@ -1463,8 +1468,12 @@ static int psp_dtm_terminate(struct psp_context *psp)
>         if (amdgpu_sriov_vf(psp->adev))
>                 return 0;
>
> -       if (!psp->dtm_context.dtm_initialized)
> -               return 0;
> +       if (!psp->dtm_context.dtm_initialized) {
> +               if (psp->dtm_context.dtm_shared_buf)
> +                       goto out;
> +               else
> +                       return 0;
> +       }
>
>         ret = psp_dtm_unload(psp);
>         if (ret)
> @@ -1472,6 +1481,7 @@ static int psp_dtm_terminate(struct psp_context *psp)
>
>         psp->dtm_context.dtm_initialized = false;
>
> +out:
>         /* free hdcp shared memory */
>         amdgpu_bo_free_kernel(&psp->dtm_context.dtm_shared_bo,
>                               &psp->dtm_context.dtm_shared_mc_addr,
> --
> 2.17.1
>
> _______________________________________________
> amd-gfx mailing list
> amd-gfx at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/amd-gfx


More information about the amd-gfx mailing list