]> git.proxmox.com Git - mirror_edk2.git/blobdiff - MdeModulePkg/Bus/Usb/UsbKbDxe/EfiKey.c
raise TPL to TPL_CALLBACK level at DriverBindingStart() for all usb-related modules...
[mirror_edk2.git] / MdeModulePkg / Bus / Usb / UsbKbDxe / EfiKey.c
index 2733d562d7d417b83d1e34c969d41bd0693578c7..278c2da19a474d1b3c8dd39b3d9c51c9afa5347d 100644 (file)
@@ -154,7 +154,9 @@ USBKeyboardDriverBindingStart (
   UINT8                         PollingInterval;\r
   UINT8                         PacketSize;\r
   BOOLEAN                       Found;\r
+  EFI_TPL                       OldTpl;\r
 \r
+  OldTpl = gBS->RaiseTPL (TPL_CALLBACK);\r
   //\r
   // Open USB I/O Protocol\r
   //\r
@@ -167,7 +169,7 @@ USBKeyboardDriverBindingStart (
                   EFI_OPEN_PROTOCOL_BY_DRIVER\r
                   );\r
   if (EFI_ERROR (Status)) {\r
-    return Status;\r
+    goto ErrorExit1;\r
   }\r
 \r
   UsbKeyboardDevice = AllocateZeroPool (sizeof (USB_KB_DEV));\r
@@ -381,6 +383,7 @@ USBKeyboardDriverBindingStart (
     FALSE\r
     );\r
 \r
+  gBS->RestoreTPL (OldTpl);\r
   return EFI_SUCCESS;\r
 \r
 //\r
@@ -407,6 +410,10 @@ ErrorExit:
          This->DriverBindingHandle,\r
          Controller\r
          );\r
+\r
+ErrorExit1:\r
+  gBS->RestoreTPL (OldTpl);\r
+\r
   return Status;\r
 \r
 }\r