Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

net: phy: fixed_phy: let fixed_phy_unregister free the phy_device

fixed_phy_register() creates and registers the phy_device. To be
symmetric, we should not only unregister, but also free the phy_device
in fixed_phy_unregister(). This allows to simplify code in users.

Note wrt of_phy_deregister_fixed_link():
put_device(&phydev->mdio.dev) and phy_device_free(phydev) are identical.

Signed-off-by: Heiner Kallweit <hkallweit1@gmail.com>
Reviewed-by: Russell King (Oracle) <rmk+kernel@armlinux.org.uk>
Link: https://patch.msgid.link/ad8dda9a-10ed-4060-916b-3f13bdbb899d@gmail.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>

authored by

Heiner Kallweit and committed by
Jakub Kicinski
a0f849c1 39e94fdc

+4 -7
+3 -6
drivers/net/dsa/dsa_loop.c
··· 386 386 387 387 static void dsa_loop_phydevs_unregister(void) 388 388 { 389 - unsigned int i; 390 - 391 - for (i = 0; i < NUM_FIXED_PHYS; i++) 392 - if (!IS_ERR(phydevs[i])) { 389 + for (int i = 0; i < NUM_FIXED_PHYS; i++) { 390 + if (!IS_ERR(phydevs[i])) 393 391 fixed_phy_unregister(phydevs[i]); 394 - phy_device_free(phydevs[i]); 395 - } 392 + } 396 393 } 397 394 398 395 static int __init dsa_loop_init(void)
-1
drivers/net/mdio/of_mdio.c
··· 473 473 fixed_phy_unregister(phydev); 474 474 475 475 put_device(&phydev->mdio.dev); /* of_phy_find_device() */ 476 - phy_device_free(phydev); /* fixed_phy_register() */ 477 476 } 478 477 EXPORT_SYMBOL(of_phy_deregister_fixed_link);
+1
drivers/net/phy/fixed_phy.c
··· 307 307 phy_device_remove(phy); 308 308 of_node_put(phy->mdio.dev.of_node); 309 309 fixed_phy_del(phy->mdio.addr); 310 + phy_device_free(phy); 310 311 } 311 312 EXPORT_SYMBOL_GPL(fixed_phy_unregister); 312 313