platform/x86/intel/pmc: Fix in mtl_punit_pmt_init()
authorRajvi Jingar <rajvi.jingar@linux.intel.com>
Tue, 19 Dec 2023 04:22:09 +0000 (20:22 -0800)
committerHans de Goede <hdegoede@redhat.com>
Tue, 19 Dec 2023 15:48:05 +0000 (16:48 +0100)
pci_get_domain_bus_and_slot() increases the reference count on the pci
device that is used to register the endpoint. In case of failure in
registration, decrease reference count using pci_dev_put(pcidev) before
returning.

Fixes: 6e7964855381 ("platform/x86/intel/pmc: Show Die C6 counter on Meteor Lake")
Signed-off-by: Rajvi Jingar <rajvi.jingar@linux.intel.com>
Signed-off-by: David E. Box <david.e.box@linux.intel.com>
Link: https://lore.kernel.org/r/20231219042216.2592029-1-rajvi.jingar@linux.intel.com
Reviewed-by: Hans de Goede <hdegoede@redhat.com>
Signed-off-by: Hans de Goede <hdegoede@redhat.com>
drivers/platform/x86/intel/pmc/mtl.c

index 38c2f946ec231f7375ac5755a813ff3d84effa2b..fb59dffccf281ee11d34337aa5be3dac469af203 100644 (file)
@@ -985,6 +985,7 @@ static void mtl_punit_pmt_init(struct pmc_dev *pmcdev)
        }
 
        ep = pmt_telem_find_and_register_endpoint(pcidev, MTL_PMT_DMU_GUID, 0);
+       pci_dev_put(pcidev);
        if (IS_ERR(ep)) {
                dev_err(&pmcdev->pdev->dev,
                        "pmc_core: couldn't get DMU telem endpoint, %ld\n",
@@ -992,7 +993,6 @@ static void mtl_punit_pmt_init(struct pmc_dev *pmcdev)
                return;
        }
 
-       pci_dev_put(pcidev);
        pmcdev->punit_ep = ep;
 
        pmcdev->has_die_c6 = true;