[PATCH] r8152: stop submitting rx for -EPROTO

From: Jason-ch Chen
Date: Wed Sep 29 2021 - 01:18:46 EST


When unplugging RTL8152 Fast Ethernet Adapter which is plugged
into an USB HUB, the driver would get -EPROTO for bulk transfer.
There is a high probability to get the soft/hard lockup
information if the driver continues to submit Rx before the HUB
completes the detection of all hub ports and issue the
disconnect event.

[ 644.786219] net_ratelimit: 113887 callbacks suppressed
[ 644.786239] r8152 1-1.2.4:1.0 eth0: Rx status -71
[ 644.786335] r8152 1-1.2.4:1.0 eth0: Rx status -71
[ 644.786369] r8152 1-1.2.4:1.0 eth0: Rx status -71
[ 644.786431] r8152 1-1.2.4:1.0 eth0: Rx status -71
[ 644.786493] r8152 1-1.2.4:1.0 eth0: Rx status -71
[ 644.786555] r8152 1-1.2.4:1.0 eth0: Rx status -71
[ 644.786617] r8152 1-1.2.4:1.0 eth0: Rx status -71
[ 644.786678] r8152 1-1.2.4:1.0 eth0: Rx status -71
[ 644.786740] r8152 1-1.2.4:1.0 eth0: Rx status -71
[ 644.786802] r8152 1-1.2.4:1.0 eth0: Rx status -71
[ 645.041159] mtk-scp 10500000.scp: scp_ipi_send: IPI timeout!
[ 645.041211] cros-ec-rpmsg 10500000.scp.cros-ec-rpmsg.13.-1: rpmsg send failed
[ 649.183350] watchdog: BUG: soft lockup - CPU#0 stuck for 12s! [migration/0:14]

Signed-off-by: Jason-ch Chen <jason-ch.chen@xxxxxxxxxxxx>
---
drivers/net/usb/r8152.c | 1 +
1 file changed, 1 insertion(+)

diff --git a/drivers/net/usb/r8152.c b/drivers/net/usb/r8152.c
index 60ba9b734055..250718f0dcb7 100644
--- a/drivers/net/usb/r8152.c
+++ b/drivers/net/usb/r8152.c
@@ -1771,6 +1771,7 @@ static void read_bulk_callback(struct urb *urb)
netif_device_detach(tp->netdev);
return;
case -ENOENT:
+ case -EPROTO:
return; /* the urb is in unlink state */
case -ETIME:
if (net_ratelimit())
--
2.18.0