]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
net: usb: lan78xx: Fix memory leak on device unplug by freeing PHY device
authorOleksij Rempel <o.rempel@pengutronix.de>
Sat, 16 Nov 2024 13:05:58 +0000 (14:05 +0100)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 5 Dec 2024 09:59:37 +0000 (10:59 +0100)
[ Upstream commit ae7370e61c5d8f5bcefc2d4fca724bd4e9bbf789 ]

Add calls to `phy_device_free` after `fixed_phy_unregister` to fix a
memory leak that occurs when the device is unplugged. This ensures
proper cleanup of pseudo fixed-link PHYs.

Fixes: 89b36fb5e532 ("lan78xx: Lan7801 Support for Fixed PHY")
Cc: Raghuram Chary J <raghuramchary.jallipalli@microchip.com>
Signed-off-by: Oleksij Rempel <o.rempel@pengutronix.de>
Link: https://patch.msgid.link/20241116130558.1352230-2-o.rempel@pengutronix.de
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
drivers/net/usb/lan78xx.c

index f56f45c924de0d9495d201e14e40da4bb90dad4b..de07d900382051af1f47ccb4b4ec56b1752b13b7 100644 (file)
@@ -2204,6 +2204,7 @@ static int lan78xx_phy_init(struct lan78xx_net *dev)
                if (dev->chipid == ID_REV_CHIP_ID_7801_) {
                        if (phy_is_pseudo_fixed_link(phydev)) {
                                fixed_phy_unregister(phydev);
+                               phy_device_free(phydev);
                        } else {
                                phy_unregister_fixup_for_uid(PHY_KSZ9031RNX,
                                                             0xfffffff0);
@@ -3884,8 +3885,10 @@ static void lan78xx_disconnect(struct usb_interface *intf)
 
        phy_disconnect(net->phydev);
 
-       if (phy_is_pseudo_fixed_link(phydev))
+       if (phy_is_pseudo_fixed_link(phydev)) {
                fixed_phy_unregister(phydev);
+               phy_device_free(phydev);
+       }
 
        unregister_netdev(net);