[PATCH] drm/amdgpu: fix pci device refcount leak

Quan, Evan Evan.Quan at amd.com
Fri Nov 18 01:54:58 UTC 2022


[AMD Official Use Only - General]

Reviewed-by: Evan Quan <evan.quan at amd.com>

> -----Original Message-----
> From: Yang Yingliang <yangyingliang at huawei.com>
> Sent: Thursday, November 17, 2022 11:00 PM
> To: amd-gfx at lists.freedesktop.org
> Cc: Deucher, Alexander <Alexander.Deucher at amd.com>; Quan, Evan
> <Evan.Quan at amd.com>; yangyingliang at 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 <yangyingliang at 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


More information about the amd-gfx mailing list