[PATCH 0/2] Fix network commands w/ USB Eth gadget

Miquel Raynal miquel.raynal at bootlin.com
Sat Jul 22 00:25:35 CEST 2023


Hello,

I recently came across serious issues using U-Boot on Beagle Bone
Black. The USB Ethernet gadget is behaving in a way that is not
compliant with the uclass expectations, leading to use-after-free
accesses often producing data aborts. All network commands are
affected.

There are two problems:
* Any network command after completion could produce a data abort
* A tftp retrieval with a wrong file name would produce a data abort

Here is how the major issue (the former one) looks like:

=> tftp 0x81000000 zImage
using musb-hdrc, OUT ep1out IN ep1in STATUS ep2in
MAC f8:dc:7a:00:00:02
HOST MAC f8:dc:7a:00:00:01
RNDIS ready
musb-hdrc: peripheral reset irq lost!
high speed config #2: 2 mA, Ethernet Gadget, using RNDIS
USB RNDIS network up!
Using usb_ether device
TFTP from server 192.168.0.1; our IP address is 192.168.0.100
Filename 'zImage'.
Load address: 0x81000000
Loading: ##################################################  13 MiB
         4.2 MiB/s
done
Bytes transferred = 13634360 (d00b38 hex)
data abort
pc : [<9ff80fba>]          lr : [<9ff7abd9>]
reloc pc : [<8081bfba>]    lr : [<80815bd9>]
sp : 9df2f9f8  ip : 00000020     fp : 00000003
r10: 00000200  r9 : 9df44ea0     r8 : 9df2fa68
r7 : 9df2fa68  r6 : 9ffdbabc     r5 : 9ffcdbcd  r4 : 00000018
r3 : 00000018  r2 : 9ffdba00     r1 : 00000001  r0 : 9df4d348
Flags: Nzcv  IRQs off  FIQs on  Mode SVC_32 (T)
Code: 68c2 6881 f023 0303 (60ca) 4403 
Resetting CPU ...

While debugging this issue, I came across Qianfan's bug report which
raised this issue one year ago. Qianfan nicely pointed at two of his
patches sent on the mailing list following his investigations, which
IMHO got refused for a wrong reason.

Link: https://lore.kernel.org/all/7536b9e1-de7a-a492-6951-485d4eb75df1@163.com/
Link: https://patchwork.ozlabs.org/project/uboot/patch/20220402025836.19374-1-qianfanguijin@163.com/
Link: https://patchwork.ozlabs.org/project/uboot/patch/20220402025836.19374-2-qianfanguijin@163.com/

I've taken over Qianfan's two patches, I took the liberty to explain a
bit more what these issues were about and why they were serious,
rewording his first patch, and trying to fix the second issue
differently, because I believe the second issue should be avoided rather
than workarounded.

Once ready to send this series, I noticed that two other people already
tried to fix this:
Link: https://lore.kernel.org/all/20221212204411.2247170-1-bero@baylibre.com/
Link: https://lists.denx.de/pipermail/u-boot/2022-December/502055.html

I have no idea why this is still an open issue, I hope the "code
reorganization" reason that was mentioned in one of the above threads
does not stand anymore given how serious these issues are, so whatever
solution is preferred, I hope one will soon be picked-up :-)

Thanks,
Miquèl

Miquel Raynal (1):
  net: tftp: Prevent too early device removal leading to data aborts

Qianfan Zhao (1):
  net: eth-uclass: Prevent data aborts with the Ethernet USB gadget

 net/eth-uclass.c | 14 ++++++++++++--
 net/tftp.c       |  1 -
 2 files changed, 12 insertions(+), 3 deletions(-)

-- 
2.34.1



More information about the U-Boot mailing list