[PATCH v2 2/2] net: eth-uclass: Fix data abort when tftp get nonexistent file via usb
qianfanguijin at 163.com
qianfanguijin at 163.com
Mon Mar 28 11:57:45 CEST 2022
From: qianfan Zhao <qianfanguijin at 163.com>
tftp_handler do eth_halt when TFTP_ERROR, but eth_halt will remove eth
device if it is an usb network. usbeth's private data will be unaccessable
when usb_eth_free_pkt, touch it will trigger data abort.
Next is the console messages:
=> tftp xxx
...
Loading: *
TFTP error: 'open failed: No such file or directory' (1)
Not retrying...
data abort
pc : [<9feb6ba2>] lr : [<9feb6b9f>]
Fix it.
Signed-off-by: qianfan Zhao <qianfanguijin at 163.com>
---
net/eth-uclass.c | 7 +++++++
1 file changed, 7 insertions(+)
diff --git a/net/eth-uclass.c b/net/eth-uclass.c
index c6eb1bc8f8..27baf52c26 100644
--- a/net/eth-uclass.c
+++ b/net/eth-uclass.c
@@ -405,6 +405,13 @@ int eth_rx(void)
flags = 0;
if (ret > 0)
net_process_received_packet(packet, ret);
+
+ /* ethernet maybe halted when packet_handler, check again */
+ if (!eth_is_active(current)) {
+ ret = 0;
+ break;
+ }
+
if (ret >= 0 && eth_get_ops(current)->free_pkt)
eth_get_ops(current)->free_pkt(current, packet, ret);
if (ret <= 0)
--
2.17.1
More information about the U-Boot
mailing list