From 18f1296f067e09f1aba8971a2b76b78734a5eb87 Mon Sep 17 00:00:00 2001 From: Ioana Ciornei Date: Tue, 13 Aug 2019 15:43:06 +0300 Subject: [PATCH] staging: fsl-dpaa2/ethsw: register_netdev only when ready The register_netdev() call should be made only when ready to process any user request on the interface. Move the call to be the last one issued in the probe sequence. Reported-by: Andrew Lunn Signed-off-by: Ioana Ciornei Link: https://lore.kernel.org/r/1565700187-16048-10-git-send-email-ioana.ciornei@nxp.com Signed-off-by: Greg Kroah-Hartman --- drivers/staging/fsl-dpaa2/ethsw/ethsw.c | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/drivers/staging/fsl-dpaa2/ethsw/ethsw.c b/drivers/staging/fsl-dpaa2/ethsw/ethsw.c index 28da109aef5e..14a9eebf687e 100644 --- a/drivers/staging/fsl-dpaa2/ethsw/ethsw.c +++ b/drivers/staging/fsl-dpaa2/ethsw/ethsw.c @@ -1588,23 +1588,21 @@ static int ethsw_probe_port(struct ethsw_core *ethsw, u16 port_idx) port_netdev->min_mtu = ETH_MIN_MTU; port_netdev->max_mtu = ETHSW_MAX_FRAME_LENGTH; + err = ethsw_port_init(port_priv, port_idx); + if (err) + goto err_port_probe; + err = register_netdev(port_netdev); if (err < 0) { dev_err(dev, "register_netdev error %d\n", err); - goto err_register_netdev; + goto err_port_probe; } ethsw->ports[port_idx] = port_priv; - 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: +err_port_probe: free_netdev(port_netdev); return err;