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:
parent
b2fdbfa91b
commit
7dbac0c9a1
|
@ -1460,13 +1460,23 @@ static int ethsw_probe_port(struct ethsw_core *ethsw, u16 port_idx)
|
||||||
err = register_netdev(port_netdev);
|
err = register_netdev(port_netdev);
|
||||||
if (err < 0) {
|
if (err < 0) {
|
||||||
dev_err(dev, "register_netdev error %d\n", err);
|
dev_err(dev, "register_netdev error %d\n", err);
|
||||||
free_netdev(port_netdev);
|
goto err_register_netdev;
|
||||||
return err;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
ethsw->ports[port_idx] = port_priv;
|
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)
|
static int ethsw_probe(struct fsl_mc_device *sw_dev)
|
||||||
|
|
Loading…
Reference in New Issue