staging: fsl-dpaa2/ethsw: Remove netdevice on port probing error

If the ethsw_port_init() call failed, the netdevice remains registered in
the system.

Use labels to ensure that netdevice is unregistered and freed in this case.

Signed-off-by: Razvan Stefanescu <razvan.stefanescu@nxp.com>
Signed-off-by: Ioana Ciornei <ioana.ciornei@nxp.com>
Link: https://lore.kernel.org/r/1562336836-17119-4-git-send-email-ioana.ciornei@nxp.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
Razvan Stefanescu 2019-07-05 17:27:13 +03:00 committed by Greg Kroah-Hartman
parent b2fdbfa91b
commit 7dbac0c9a1
1 changed files with 13 additions and 3 deletions

View File

@ -1460,13 +1460,23 @@ static int ethsw_probe_port(struct ethsw_core *ethsw, u16 port_idx)
err = register_netdev(port_netdev);
if (err < 0) {
dev_err(dev, "register_netdev error %d\n", err);
free_netdev(port_netdev);
return err;
goto err_register_netdev;
}
ethsw->ports[port_idx] = port_priv;
return ethsw_port_init(port_priv, port_idx);
err = ethsw_port_init(port_priv, port_idx);
if (err)
goto err_ethsw_port_init;
return 0;
err_ethsw_port_init:
unregister_netdev(port_netdev);
err_register_netdev:
free_netdev(port_netdev);
return err;
}
static int ethsw_probe(struct fsl_mc_device *sw_dev)