Applied. Thanks! Alex On Thu, Nov 17, 2022 at 8:55 PM Quan, Evan <Evan.Quan@xxxxxxx> wrote: > > [AMD Official Use Only - General] > > Reviewed-by: Evan Quan <evan.quan@xxxxxxx> > > > -----Original Message----- > > From: Yang Yingliang <yangyingliang@xxxxxxxxxx> > > Sent: Thursday, November 17, 2022 11:00 PM > > To: amd-gfx@xxxxxxxxxxxxxxxxxxxxx > > Cc: Deucher, Alexander <Alexander.Deucher@xxxxxxx>; Quan, Evan > > <Evan.Quan@xxxxxxx>; yangyingliang@xxxxxxxxxx > > 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@xxxxxxxxxx> > > --- > > 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