]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
net: ftgmac100: fix potential NULL pointer access in ftgmac100_phy_disconnect
authorHeiner Kallweit <hkallweit1@gmail.com>
Wed, 30 Jul 2025 20:23:23 +0000 (22:23 +0200)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 20 Aug 2025 16:40:45 +0000 (18:40 +0200)
commit e88fbc30dda1cb7438515303704ceddb3ade4ecd upstream.

After the call to phy_disconnect() netdev->phydev is reset to NULL.
So fixed_phy_unregister() would be called with a NULL pointer as argument.
Therefore cache the phy_device before this call.

Fixes: e24a6c874601 ("net: ftgmac100: Get link speed and duplex for NC-SI")
Cc: stable@vger.kernel.org
Signed-off-by: Heiner Kallweit <hkallweit1@gmail.com>
Reviewed-by: Dawid Osuchowski <dawid.osuchowski@linux.intel.com>
Link: https://patch.msgid.link/2b80a77a-06db-4dd7-85dc-3a8e0de55a1d@gmail.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/net/ethernet/faraday/ftgmac100.c

index a98d5af3f9e3c6756c95292e4d073fb7db5f1aad..6421d8321bfeac0cd789aa0455d47a3201a43740 100644 (file)
@@ -1730,16 +1730,17 @@ err_register_mdiobus:
 static void ftgmac100_phy_disconnect(struct net_device *netdev)
 {
        struct ftgmac100 *priv = netdev_priv(netdev);
+       struct phy_device *phydev = netdev->phydev;
 
-       if (!netdev->phydev)
+       if (!phydev)
                return;
 
-       phy_disconnect(netdev->phydev);
+       phy_disconnect(phydev);
        if (of_phy_is_fixed_link(priv->dev->of_node))
                of_phy_deregister_fixed_link(priv->dev->of_node);
 
        if (priv->use_ncsi)
-               fixed_phy_unregister(netdev->phydev);
+               fixed_phy_unregister(phydev);
 }
 
 static void ftgmac100_destroy_mdio(struct net_device *netdev)