perf/x86/intel/uncore: Fix reference count leak in hswep_has_limit_sbox()
authorXiongfeng Wang <wangxiongfeng2@huawei.com>
Fri, 18 Nov 2022 06:31:35 +0000 (14:31 +0800)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Sat, 31 Dec 2022 12:31:57 +0000 (13:31 +0100)
[ Upstream commit 1ff9dd6e7071a561f803135c1d684b13c7a7d01d ]

pci_get_device() will increase the reference count for the returned
'dev'. We need to call pci_dev_put() to decrease the reference count.
Since 'dev' is only used in pci_read_config_dword(), let's add
pci_dev_put() right after it.

Fixes: 9d480158ee86 ("perf/x86/intel/uncore: Remove uncore extra PCI dev HSWEP_PCI_PCU_3")
Signed-off-by: Xiongfeng Wang <wangxiongfeng2@huawei.com>
Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
Reviewed-by: Kan Liang <kan.liang@linux.intel.com>
Link: https://lore.kernel.org/r/20221118063137.121512-3-wangxiongfeng2@huawei.com
Signed-off-by: Sasha Levin <sashal@kernel.org>
arch/x86/events/intel/uncore_snbep.c

index 76fedc8e12dd6104f997f545318fca45e51e3967..f5d89d06c66aeee98e95cefda7869e3501e93a4f 100644 (file)
@@ -2891,6 +2891,7 @@ static bool hswep_has_limit_sbox(unsigned int device)
                return false;
 
        pci_read_config_dword(dev, HSWEP_PCU_CAPID4_OFFET, &capid4);
+       pci_dev_put(dev);
        if (!hswep_get_chop(capid4))
                return true;