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

Commit 16a67eb3 authored by Johan Hovold's avatar Johan Hovold Committed by David S. Miller
Browse files

net: ethernet: mediatek: fix fixed-link phydev leaks



Make sure to deregister and free any fixed-link PHY registered using
of_phy_register_fixed_link() on initialisation errors and on uninit.

Fixes: 0c72c50f ("net-next: mediatek: add fixed-phy support")
Signed-off-by: default avatarJohan Hovold <johan@kernel.org>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 5a57a304
Loading
Loading
Loading
Loading
+4 −0
Original line number Original line Diff line number Diff line
@@ -318,6 +318,8 @@ static int mtk_phy_connect(struct net_device *dev)
	return 0;
	return 0;


err_phy:
err_phy:
	if (of_phy_is_fixed_link(mac->of_node))
		of_phy_deregister_fixed_link(mac->of_node);
	of_node_put(np);
	of_node_put(np);
	dev_err(eth->dev, "%s: invalid phy\n", __func__);
	dev_err(eth->dev, "%s: invalid phy\n", __func__);
	return -EINVAL;
	return -EINVAL;
@@ -1923,6 +1925,8 @@ static void mtk_uninit(struct net_device *dev)
	struct mtk_eth *eth = mac->hw;
	struct mtk_eth *eth = mac->hw;


	phy_disconnect(dev->phydev);
	phy_disconnect(dev->phydev);
	if (of_phy_is_fixed_link(mac->of_node))
		of_phy_deregister_fixed_link(mac->of_node);
	mtk_irq_disable(eth, MTK_QDMA_INT_MASK, ~0);
	mtk_irq_disable(eth, MTK_QDMA_INT_MASK, ~0);
	mtk_irq_disable(eth, MTK_PDMA_INT_MASK, ~0);
	mtk_irq_disable(eth, MTK_PDMA_INT_MASK, ~0);
}
}