X-Git-Url: https://git.proxmox.com/?p=mirror_edk2.git;a=blobdiff_plain;f=MdeModulePkg%2FBus%2FPci%2FUhciDxe%2FUhci.c;h=b52510041f8e6ecf531a055eba806a4fd9e18af8;hp=82142b6a85acfd9e4e173c6b5a0dbc4e2f367714;hb=6a6d955c5f670141344c614c65dbea332f393b57;hpb=ac4f8b5abe6758183102be3feea30c7430eedf3a diff --git a/MdeModulePkg/Bus/Pci/UhciDxe/Uhci.c b/MdeModulePkg/Bus/Pci/UhciDxe/Uhci.c index 82142b6a85..b52510041f 100644 --- a/MdeModulePkg/Bus/Pci/UhciDxe/Uhci.c +++ b/MdeModulePkg/Bus/Pci/UhciDxe/Uhci.c @@ -2133,6 +2133,7 @@ UhciDriverBindingStart ( USB_HC_DEV *Uhc; UINT64 Supports; UINT64 OriginalPciAttributes; + BOOLEAN PciAttributesSaved; // // Open PCIIO, then enable the EHC device and turn off emulation @@ -2151,6 +2152,7 @@ UhciDriverBindingStart ( return Status; } + PciAttributesSaved = FALSE; // // Save original PCI attributes // @@ -2162,8 +2164,9 @@ UhciDriverBindingStart ( ); if (EFI_ERROR (Status)) { - return Status; + goto CLOSE_PCIIO; } + PciAttributesSaved = TRUE; UhciTurnOffUsbEmulation (PciIo); @@ -2262,15 +2265,17 @@ FREE_UHC: UhciFreeDev (Uhc); CLOSE_PCIIO: - // - // Restore original PCI attributes - // - PciIo->Attributes ( - PciIo, - EfiPciIoAttributeOperationSet, - OriginalPciAttributes, - NULL - ); + if (PciAttributesSaved == TRUE) { + // + // Restore original PCI attributes + // + PciIo->Attributes ( + PciIo, + EfiPciIoAttributeOperationSet, + OriginalPciAttributes, + NULL + ); + } gBS->CloseProtocol ( Controller,