From 3371773b5c9da2fca888354ead741340a358a6b0 Mon Sep 17 00:00:00 2001 From: David Wu Date: Mon, 22 Mar 2021 17:27:49 +0800 Subject: [PATCH] net: ethernet: stmicro: Exit loopback when dwmac_rk_init failed This patch fixed the following issue: [ 106.688843] Call trace: [ 106.689091] dwmac4_release_tx_desc+0x0/0x10 [ 106.689495] dwmac_rk_loopback_with_identify+0x48/0x54 [ 106.689971] dwmac_rk_loopback_run.constprop.10+0x55c/0xcf8 [ 106.690482] phy_lb_scan_store+0xdc/0xe0 [ 106.690848] dev_attr_store+0x18/0x28 [ 106.691191] sysfs_kf_write+0x48/0x58 [ 106.691531] kernfs_fop_write+0xf4/0x220 [ 106.691896] __vfs_write+0x34/0x158 [ 106.692219] vfs_write+0xb0/0x1d0 [ 106.692530] ksys_write+0x64/0xe0 [ 106.692842] __arm64_sys_write+0x14/0x20 Signed-off-by: David Wu Change-Id: I7d36105d20cc94275842f07c9d7aaa49cc6daa06 --- drivers/net/ethernet/stmicro/stmmac/dwmac-rk-tool.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/drivers/net/ethernet/stmicro/stmmac/dwmac-rk-tool.c b/drivers/net/ethernet/stmicro/stmmac/dwmac-rk-tool.c index c05ae3100fa8..46633a665f7e 100644 --- a/drivers/net/ethernet/stmicro/stmmac/dwmac-rk-tool.c +++ b/drivers/net/ethernet/stmicro/stmmac/dwmac-rk-tool.c @@ -1216,7 +1216,9 @@ static int dwmac_rk_loopback_run(struct stmmac_priv *priv, /* wait for phy and controller ready */ usleep_range(100000, 200000); - dwmac_rk_init(ndev, lb_priv); + ret = dwmac_rk_init(ndev, lb_priv); + if (ret) + goto exit_init; dwmac_rk_set_loopback(priv, lb_priv->type, lb_priv->speed, true); if (lb_priv->scan) { @@ -1240,6 +1242,7 @@ out: dwmac_rk_release(ndev, lb_priv); dwmac_rk_set_loopback(priv, lb_priv->type, lb_priv->speed, false); +exit_init: if (ndev_up) ndev->netdev_ops->ndo_open(ndev);