From 01ad4134c3e6339ac53c85fccf62ed10d5b6d662 Mon Sep 17 00:00:00 2001 From: likun su Date: Thu, 3 Aug 2023 19:08:27 +0800 Subject: MdeModulePkg: Solve boot hang Xhci driver when use USB DVD with empty disk Signed-off-by: likun su Reviewed-by: Liming Gao Reviewed-by: lichao Acked-by: Hao A Wu --- MdeModulePkg/Bus/Pci/XhciDxe/XhciSched.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/MdeModulePkg/Bus/Pci/XhciDxe/XhciSched.c b/MdeModulePkg/Bus/Pci/XhciDxe/XhciSched.c index 298fb88b81..53421e64a8 100644 --- a/MdeModulePkg/Bus/Pci/XhciDxe/XhciSched.c +++ b/MdeModulePkg/Bus/Pci/XhciDxe/XhciSched.c @@ -171,7 +171,6 @@ XhcCreateUrb ( Urb->Context = Context; Status = XhcCreateTransferTrb (Xhc, Urb); - ASSERT_EFI_ERROR (Status); if (EFI_ERROR (Status)) { DEBUG ((DEBUG_ERROR, "XhcCreateUrb: XhcCreateTransferTrb Failed, Status = %r\n", Status)); FreePool (Urb); @@ -247,7 +246,11 @@ XhcCreateTransferTrb ( Dci = XhcEndpointToDci (Urb->Ep.EpAddr, (UINT8)(Urb->Ep.Direction)); ASSERT (Dci < 32); - EPRing = (TRANSFER_RING *)(UINTN)Xhc->UsbDevContext[SlotId].EndpointTransferRing[Dci-1]; + EPRing = (TRANSFER_RING *)(UINTN)Xhc->UsbDevContext[SlotId].EndpointTransferRing[Dci-1]; + if (EPRing == NULL) { + return EFI_OUT_OF_RESOURCES; + } + Urb->Ring = EPRing; OutputContext = Xhc->UsbDevContext[SlotId].OutputContext; if (Xhc->HcCParams.Data.Csz == 0) { -- cgit