diff options
author | Minda Chen <minda.chen@starfivetech.com> | 2023-10-12 11:44:34 +0300 |
---|---|---|
committer | Andy Hu <andy.hu@starfivetech.com> | 2023-10-18 13:53:00 +0300 |
commit | de86bf5edc2bde10abbb901240908a55827c5d91 (patch) | |
tree | bb9e60be3f4809c52ed5361220d141dc4eb8a2d9 /drivers | |
parent | 6f58ddddafb8069201d9d237c42ee22b02b1365a (diff) | |
download | u-boot-de86bf5edc2bde10abbb901240908a55827c5d91.tar.xz |
usb: fix TRB_TRANSFER return null pointer issue
xhci_wait_for_event() wait TRB_TRANSFER may return null
pointer, shoud checkit avoid crash.
Read usb device info maybe failed, should check it and
do not register usb device. uboot should rescan usb
device and register.
Signed-off-by: Minda Chen <minda.chen@starfivetech.com>
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/usb/host/xhci-ring.c | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/drivers/usb/host/xhci-ring.c b/drivers/usb/host/xhci-ring.c index 35bd5cd29e..0bc44752be 100644 --- a/drivers/usb/host/xhci-ring.c +++ b/drivers/usb/host/xhci-ring.c @@ -499,6 +499,8 @@ static void abort_td(struct usb_device *udev, int ep_index) xhci_queue_command(ctrl, NULL, udev->slot_id, ep_index, TRB_STOP_RING); event = xhci_wait_for_event(ctrl, TRB_TRANSFER); + if (!event) + return; field = le32_to_cpu(event->trans_event.flags); BUG_ON(TRB_TO_SLOT_ID(field) != udev->slot_id); BUG_ON(TRB_TO_EP_INDEX(field) != ep_index); |