Re: [PATCH] drm/amdgpu: fix pci device refcount leak
Applied. Thanks! Alex On Thu, Nov 17, 2022 at 8:55 PM Quan, Evan wrote: > > [AMD Official Use Only - General] > > Reviewed-by: Evan Quan > > > -Original Message- > > From: Yang Yingliang > > Sent: Thursday, November 17, 2022 11:00 PM > > To: amd-gfx@lists.freedesktop.org > > Cc: Deucher, Alexander ; Quan, Evan > > ; 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 > > --- > > 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
RE: [PATCH] drm/amdgpu: fix pci device refcount leak
[AMD Official Use Only - General] Reviewed-by: Evan Quan > -Original Message- > From: Yang Yingliang > Sent: Thursday, November 17, 2022 11:00 PM > To: amd-gfx@lists.freedesktop.org > Cc: Deucher, Alexander ; Quan, Evan > ; 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 > --- > 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
[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 --- 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