summaryrefslogtreecommitdiff
path: root/drivers
diff options
context:
space:
mode:
authorMinda Chen <minda.chen@starfivetech.com>2023-10-12 11:44:34 +0300
committerAndy Hu <andy.hu@starfivetech.com>2023-10-18 13:53:00 +0300
commitde86bf5edc2bde10abbb901240908a55827c5d91 (patch)
treebb9e60be3f4809c52ed5361220d141dc4eb8a2d9 /drivers
parent6f58ddddafb8069201d9d237c42ee22b02b1365a (diff)
downloadu-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.c2
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);