[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