Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 9b8061a6 authored by Yang Yingliang's avatar Yang Yingliang Committed by Greg Kroah-Hartman
Browse files

net: pch_gbe: fix pci device refcount leak while module exiting



[ Upstream commit 5619537284f1017e9f6c7500b02b859b3830a06d ]

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().

In pch_gbe_probe(), pci_get_domain_bus_and_slot() is called,
so in error path in probe() and remove() function, pci_dev_put()
should be called to avoid refcount leak. Compile tested only.

Fixes: 1a0bdadb ("net/pch_gbe: supports eg20t ptp clock")
Signed-off-by: default avatarYang Yingliang <yangyingliang@huawei.com>
Link: https://lore.kernel.org/r/20221117135148.301014-1-yangyingliang@huawei.com


Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
Signed-off-by: default avatarSasha Levin <sashal@kernel.org>
parent 9a39ea43
Loading
Loading
Loading
Loading
+4 −1
Original line number Diff line number Diff line
@@ -2481,6 +2481,7 @@ static void pch_gbe_remove(struct pci_dev *pdev)
	unregister_netdev(netdev);

	pch_gbe_phy_hw_reset(&adapter->hw);
	pci_dev_put(adapter->ptp_pdev);

	free_netdev(netdev);
}
@@ -2562,7 +2563,7 @@ static int pch_gbe_probe(struct pci_dev *pdev,
	/* setup the private structure */
	ret = pch_gbe_sw_init(adapter);
	if (ret)
		goto err_free_netdev;
		goto err_put_dev;

	/* Initialize PHY */
	ret = pch_gbe_init_phy(adapter);
@@ -2620,6 +2621,8 @@ static int pch_gbe_probe(struct pci_dev *pdev,

err_free_adapter:
	pch_gbe_phy_hw_reset(&adapter->hw);
err_put_dev:
	pci_dev_put(adapter->ptp_pdev);
err_free_netdev:
	free_netdev(netdev);
	return ret;