Hi, On 1/21/21 5:50 AM, Pan Bian wrote: > Put the PCI device rdev on error paths to fix potential reference count > leaks. > > Signed-off-by: Pan Bian <bianpan2016@xxxxxxx> Thank you for your patch, I've applied this patch to my review-hans branch: https://git.kernel.org/pub/scm/linux/kernel/git/pdx86/platform-drivers-x86.git/log/?h=review-hans Note it will show up in my review-hans branch once I've pushed my local branch there, which might take a while. Once I've run some tests on this branch the patches there will be added to the platform-drivers-x86/for-next branch and eventually will be included in the pdx86 pull-request to Linus for the next merge-window. Regards, Hans > --- > drivers/platform/x86/amd-pmc.c | 14 +++++++++++--- > 1 file changed, 11 insertions(+), 3 deletions(-) > > diff --git a/drivers/platform/x86/amd-pmc.c b/drivers/platform/x86/amd-pmc.c > index 0102bf1c7916..df140019c4bd 100644 > --- a/drivers/platform/x86/amd-pmc.c > +++ b/drivers/platform/x86/amd-pmc.c > @@ -210,31 +210,39 @@ static int amd_pmc_probe(struct platform_device *pdev) > dev->dev = &pdev->dev; > > rdev = pci_get_domain_bus_and_slot(0, 0, PCI_DEVFN(0, 0)); > - if (!rdev || !pci_match_id(pmc_pci_ids, rdev)) > + if (!rdev || !pci_match_id(pmc_pci_ids, rdev)) { > + pci_dev_put(rdev); > return -ENODEV; > + } > > dev->cpu_id = rdev->device; > err = pci_write_config_dword(rdev, AMD_PMC_SMU_INDEX_ADDRESS, AMD_PMC_BASE_ADDR_LO); > if (err) { > dev_err(dev->dev, "error writing to 0x%x\n", AMD_PMC_SMU_INDEX_ADDRESS); > + pci_dev_put(rdev); > return pcibios_err_to_errno(err); > } > > err = pci_read_config_dword(rdev, AMD_PMC_SMU_INDEX_DATA, &val); > - if (err) > + if (err) { > + pci_dev_put(rdev); > return pcibios_err_to_errno(err); > + } > > base_addr_lo = val & AMD_PMC_BASE_ADDR_HI_MASK; > > err = pci_write_config_dword(rdev, AMD_PMC_SMU_INDEX_ADDRESS, AMD_PMC_BASE_ADDR_HI); > if (err) { > dev_err(dev->dev, "error writing to 0x%x\n", AMD_PMC_SMU_INDEX_ADDRESS); > + pci_dev_put(rdev); > return pcibios_err_to_errno(err); > } > > err = pci_read_config_dword(rdev, AMD_PMC_SMU_INDEX_DATA, &val); > - if (err) > + if (err) { > + pci_dev_put(rdev); > return pcibios_err_to_errno(err); > + } > > base_addr_hi = val & AMD_PMC_BASE_ADDR_LO_MASK; > pci_dev_put(rdev); >