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

2022-11-18 Thread Alex Deucher
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

2022-11-17 Thread Quan, Evan
[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

2022-11-17 Thread Yang Yingliang
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