Skip to content

Commit 7ec52b9

Browse files
Ivan VeceraJeff Kirsher
authored andcommitted
ixgbe: fix mdio bus registration
The ixgbe ignores errors returned from mdiobus_register() and leaves adapter->mii_bus non-NULL and MDIO bus state as MDIOBUS_ALLOCATED. This triggers a BUG from mdiobus_unregister() during ixgbe_remove() call. Fixes: 8fa10ef ("ixgbe: register a mdiobus") Signed-off-by: Ivan Vecera <[email protected]> Tested-by: Andrew Bowers <[email protected]> Signed-off-by: Jeff Kirsher <[email protected]>
1 parent dabb833 commit 7ec52b9

File tree

1 file changed

+9
-7
lines changed

1 file changed

+9
-7
lines changed

drivers/net/ethernet/intel/ixgbe/ixgbe_phy.c

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -905,13 +905,12 @@ s32 ixgbe_mii_bus_init(struct ixgbe_hw *hw)
905905
struct pci_dev *pdev = adapter->pdev;
906906
struct device *dev = &adapter->netdev->dev;
907907
struct mii_bus *bus;
908+
int err = -ENODEV;
908909

909-
adapter->mii_bus = devm_mdiobus_alloc(dev);
910-
if (!adapter->mii_bus)
910+
bus = devm_mdiobus_alloc(dev);
911+
if (!bus)
911912
return -ENOMEM;
912913

913-
bus = adapter->mii_bus;
914-
915914
switch (hw->device_id) {
916915
/* C3000 SoCs */
917916
case IXGBE_DEV_ID_X550EM_A_KR:
@@ -949,12 +948,15 @@ s32 ixgbe_mii_bus_init(struct ixgbe_hw *hw)
949948
*/
950949
hw->phy.mdio.mode_support = MDIO_SUPPORTS_C45 | MDIO_SUPPORTS_C22;
951950

952-
return mdiobus_register(bus);
951+
err = mdiobus_register(bus);
952+
if (!err) {
953+
adapter->mii_bus = bus;
954+
return 0;
955+
}
953956

954957
ixgbe_no_mii_bus:
955958
devm_mdiobus_free(dev, bus);
956-
adapter->mii_bus = NULL;
957-
return -ENODEV;
959+
return err;
958960
}
959961

960962
/**

0 commit comments

Comments
 (0)