| From e6bcfca360b5983fb81056a69ccfadb1d3fb7dab Mon Sep 17 00:00:00 2001 |
| From: Sasha Levin <sashal@kernel.org> |
| Date: Tue, 29 Apr 2025 04:46:24 -0700 |
| Subject: octeon_ep: Fix host hang issue during device reboot |
| |
| From: Sathesh B Edara <sedara@marvell.com> |
| |
| [ Upstream commit 34f42736b325287a7b2ce37e415838f539767bda ] |
| |
| When the host loses heartbeat messages from the device, |
| the driver calls the device-specific ndo_stop function, |
| which frees the resources. If the driver is unloaded in |
| this scenario, it calls ndo_stop again, attempting to free |
| resources that have already been freed, leading to a host |
| hang issue. To resolve this, dev_close should be called |
| instead of the device-specific stop function.dev_close |
| internally calls ndo_stop to stop the network interface |
| and performs additional cleanup tasks. During the driver |
| unload process, if the device is already down, ndo_stop |
| is not called. |
| |
| Fixes: 5cb96c29aa0e ("octeon_ep: add heartbeat monitor") |
| Signed-off-by: Sathesh B Edara <sedara@marvell.com> |
| Reviewed-by: Simon Horman <horms@kernel.org> |
| Link: https://patch.msgid.link/20250429114624.19104-1-sedara@marvell.com |
| Signed-off-by: Jakub Kicinski <kuba@kernel.org> |
| Signed-off-by: Sasha Levin <sashal@kernel.org> |
| --- |
| drivers/net/ethernet/marvell/octeon_ep/octep_main.c | 2 +- |
| 1 file changed, 1 insertion(+), 1 deletion(-) |
| |
| diff --git a/drivers/net/ethernet/marvell/octeon_ep/octep_main.c b/drivers/net/ethernet/marvell/octeon_ep/octep_main.c |
| index 6f1fe7e283d4e..7a30095b3486f 100644 |
| --- a/drivers/net/ethernet/marvell/octeon_ep/octep_main.c |
| +++ b/drivers/net/ethernet/marvell/octeon_ep/octep_main.c |
| @@ -917,7 +917,7 @@ static void octep_hb_timeout_task(struct work_struct *work) |
| miss_cnt); |
| rtnl_lock(); |
| if (netif_running(oct->netdev)) |
| - octep_stop(oct->netdev); |
| + dev_close(oct->netdev); |
| rtnl_unlock(); |
| } |
| |
| -- |
| 2.39.5 |
| |