[AMD Official Use Only - General]

Reviewed-by: Evan Quan <evan.q...@amd.com>

> -----Original Message-----
> From: Yang Yingliang <yangyingli...@huawei.com>
> Sent: Thursday, November 17, 2022 11:00 PM
> To: amd-gfx@lists.freedesktop.org
> Cc: Deucher, Alexander <alexander.deuc...@amd.com>; Quan, Evan
> <evan.q...@amd.com>; yangyingli...@huawei.com
> Subject: [PATCH] drm/amdgpu: fix pci device refcount leak
> 
> As comment of pci_get_domain_bus_and_slot() says, it returns
> a pci device with refcount increment, when finish using it,
> the caller must decrement the reference count by calling
> pci_dev_put().
> 
> So before returning from amdgpu_device_resume|suspend_display_audio(),
> pci_dev_put() is called to avoid refcount leak.
> 
> Fixes: 3f12acc8d6d4 ("drm/amdgpu: put the audio codec into suspend state
> before gpu reset V3")
> Signed-off-by: Yang Yingliang <yangyingli...@huawei.com>
> ---
>  drivers/gpu/drm/amd/amdgpu/amdgpu_device.c | 4 ++++
>  1 file changed, 4 insertions(+)
> 
> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
> b/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
> index 64510898eedd..69e73fef1ab2 100644
> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
> @@ -5027,6 +5027,8 @@ static void
> amdgpu_device_resume_display_audio(struct amdgpu_device *adev)
>               pm_runtime_enable(&(p->dev));
>               pm_runtime_resume(&(p->dev));
>       }
> +
> +     pci_dev_put(p);
>  }
> 
>  static int amdgpu_device_suspend_display_audio(struct amdgpu_device
> *adev)
> @@ -5065,6 +5067,7 @@ static int
> amdgpu_device_suspend_display_audio(struct amdgpu_device *adev)
> 
>               if (expires < ktime_get_mono_fast_ns()) {
>                       dev_warn(adev->dev, "failed to suspend display
> audio\n");
> +                     pci_dev_put(p);
>                       /* TODO: abort the succeeding gpu reset? */
>                       return -ETIMEDOUT;
>               }
> @@ -5072,6 +5075,7 @@ static int
> amdgpu_device_suspend_display_audio(struct amdgpu_device *adev)
> 
>       pm_runtime_disable(&(p->dev));
> 
> +     pci_dev_put(p);
>       return 0;
>  }
> 
> --
> 2.25.1

Reply via email to