Commit faf5577f authored by Wen Yang's avatar Wen Yang Committed by David S. Miller

net: pasemi: fix an use-after-free in pasemi_mac_phy_init()

The phy_dn variable is still being used in of_phy_connect() after the
of_node_put() call, which may result in use-after-free.

Fixes: 1dd2d06c ("net: Rework pasemi_mac driver to use of_mdio infrastructure")
Signed-off-by: default avatarWen Yang <wen.yang99@zte.com.cn>
Cc: "David S. Miller" <davem@davemloft.net>
Cc: Thomas Gleixner <tglx@linutronix.de>
Cc: Luis Chamberlain <mcgrof@kernel.org>
Cc: Michael Ellerman <mpe@ellerman.id.au>
Cc: netdev@vger.kernel.org
Cc: linux-kernel@vger.kernel.org
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent ef86ea98
...@@ -1042,7 +1042,6 @@ static int pasemi_mac_phy_init(struct net_device *dev) ...@@ -1042,7 +1042,6 @@ static int pasemi_mac_phy_init(struct net_device *dev)
dn = pci_device_to_OF_node(mac->pdev); dn = pci_device_to_OF_node(mac->pdev);
phy_dn = of_parse_phandle(dn, "phy-handle", 0); phy_dn = of_parse_phandle(dn, "phy-handle", 0);
of_node_put(phy_dn);
mac->link = 0; mac->link = 0;
mac->speed = 0; mac->speed = 0;
...@@ -1051,6 +1050,7 @@ static int pasemi_mac_phy_init(struct net_device *dev) ...@@ -1051,6 +1050,7 @@ static int pasemi_mac_phy_init(struct net_device *dev)
phydev = of_phy_connect(dev, phy_dn, &pasemi_adjust_link, 0, phydev = of_phy_connect(dev, phy_dn, &pasemi_adjust_link, 0,
PHY_INTERFACE_MODE_SGMII); PHY_INTERFACE_MODE_SGMII);
of_node_put(phy_dn);
if (!phydev) { if (!phydev) {
printk(KERN_ERR "%s: Could not attach to phy\n", dev->name); printk(KERN_ERR "%s: Could not attach to phy\n", dev->name);
return -ENODEV; return -ENODEV;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment