On 3/17/20 7:21 AM, Masahiro Yamada wrote: [...] >> @@ -283,15 +283,23 @@ int smc911x_initialize(u8 dev_num, int base_addr) >> #if defined(CONFIG_MII) || defined(CONFIG_CMD_MII) >> int retval; >> struct mii_dev *mdiodev = mdio_alloc(); >> - if (!mdiodev) >> + if (!mdiodev) { >> + eth_unregister(dev); >> + free(dev); >> return -ENOMEM; >> + } >> + >> strncpy(mdiodev->name, dev->name, MDIO_NAME_LEN); >> mdiodev->read = smc911x_miiphy_read; >> mdiodev->write = smc911x_miiphy_write; >> >> retval = mdio_register(mdiodev); >> - if (retval < 0) >> + if (retval < 0) { >> + mdio_free(mdiodev); >> + eth_unregister(dev); >> + free(dev); >> return retval; > > > Using "goto <label>" is a general tip to > simplify the failure path.
It's even better to pull the entire MII registration into a separate function to avoid all the ifdeffery, so I'll rather do that in a separate patch. And then it's possible to use the goto labels without it looking ugly. -- Best regards, Marek Vasut