]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
net: thunderx: fix PTP device ref leak in nicvf_probe()
authorHaoxiang Li <lihaoxiang@isrc.iscas.ac.cn>
Mon, 25 May 2026 08:26:11 +0000 (16:26 +0800)
committerJakub Kicinski <kuba@kernel.org>
Wed, 27 May 2026 02:03:37 +0000 (19:03 -0700)
cavium_ptp_get() acquires a reference to the PTP PCI device
through pci_get_device(). If any initialization step fails
after cavium_ptp_get(), the PTP PCI device reference is leaked.
Add a common error path to release the PTP reference before
returning from probe failures.

Signed-off-by: Haoxiang Li <lihaoxiang@isrc.iscas.ac.cn>
Link: https://patch.msgid.link/20260525082611.61817-1-lihaoxiang@isrc.iscas.ac.cn
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
drivers/net/ethernet/cavium/thunder/nicvf_main.c

index 1c183827cb9ea1a628433972cb6cb808a5f1cd69..b9ade881c81c7944e131ba215d38a80aaae4975c 100644 (file)
@@ -2109,8 +2109,10 @@ static int nicvf_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
        }
 
        err = pci_enable_device(pdev);
-       if (err)
-               return dev_err_probe(dev, err, "Failed to enable PCI device\n");
+       if (err) {
+               err = dev_err_probe(dev, err, "Failed to enable PCI device\n");
+               goto err_put_ptp;
+       }
 
        err = pci_request_regions(pdev, DRV_NAME);
        if (err) {
@@ -2264,6 +2266,8 @@ err_release_regions:
        pci_release_regions(pdev);
 err_disable_device:
        pci_disable_device(pdev);
+err_put_ptp:
+       cavium_ptp_put(ptp_clock);
        return err;
 }