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

Alex Deucher alexdeucher at gmail.com
Fri Nov 18 20:19:10 UTC 2022


Applied.  Thanks!

Alex

On Thu, Nov 17, 2022 at 8:55 PM Quan, Evan <Evan.Quan at amd.com> wrote:
>
> [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