]> git.proxmox.com Git - mirror_ubuntu-jammy-kernel.git/commitdiff
hwmon: (coretemp) fix pci device refcount leak in nv1a_ram_new()
authorYang Yingliang <yangyingliang@huawei.com>
Fri, 18 Nov 2022 09:33:03 +0000 (17:33 +0800)
committerThomas Lamprecht <t.lamprecht@proxmox.com>
Wed, 14 Dec 2022 13:02:50 +0000 (14:02 +0100)
[ Upstream commit 7dec14537c5906b8bf40fd6fd6d9c3850f8df11d ]

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 call it after using to avoid refcount leak.

Fixes: 14513ee696a0 ("hwmon: (coretemp) Use PCI host bridge ID to identify CPU if necessary")
Signed-off-by: Yang Yingliang <yangyingliang@huawei.com>
Link: https://lore.kernel.org/r/20221118093303.214163-1-yangyingliang@huawei.com
Signed-off-by: Guenter Roeck <linux@roeck-us.net>
Signed-off-by: Sasha Levin <sashal@kernel.org>
(cherry picked from commit 6e035d5a2a6b907cfce9a80c5f442c2e459cd34e)
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
drivers/hwmon/coretemp.c

index 9b49bfc63ffc17dced57037f9ce89d813fad2eb6..42b84ebff057928c6602d2ba64b3337115488a30 100644 (file)
@@ -242,10 +242,13 @@ static int adjust_tjmax(struct cpuinfo_x86 *c, u32 id, struct device *dev)
         */
        if (host_bridge && host_bridge->vendor == PCI_VENDOR_ID_INTEL) {
                for (i = 0; i < ARRAY_SIZE(tjmax_pci_table); i++) {
-                       if (host_bridge->device == tjmax_pci_table[i].device)
+                       if (host_bridge->device == tjmax_pci_table[i].device) {
+                               pci_dev_put(host_bridge);
                                return tjmax_pci_table[i].tjmax;
+                       }
                }
        }
+       pci_dev_put(host_bridge);
 
        for (i = 0; i < ARRAY_SIZE(tjmax_table); i++) {
                if (strstr(c->x86_model_id, tjmax_table[i].id))