summaryrefslogtreecommitdiff
path: root/MdeModulePkg/Bus/Usb/UsbKbDxe
diff options
context:
space:
mode:
authorerictian <erictian@6f19259b-4bc3-4df7-8a09-765794883524>2010-05-05 05:21:38 +0000
committererictian <erictian@6f19259b-4bc3-4df7-8a09-765794883524>2010-05-05 05:21:38 +0000
commit15cc67e616cad2dad3d3b6f9ba1cba856b5de414 (patch)
tree66fac7dfc66e6fa93ad43b5e67f51a6f86ae8982 /MdeModulePkg/Bus/Usb/UsbKbDxe
parentb9d5a7f1dc0079ad269bfdcde28cd958b50cf4ed (diff)
downloadedk2-platforms-15cc67e616cad2dad3d3b6f9ba1cba856b5de414.tar.xz
raise TPL to TPL_CALLBACK level at DriverBindingStart() for all usb-related modules, which prevent DriverBindingStop() from being invoked when DriverBindingStart() runs.
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@10460 6f19259b-4bc3-4df7-8a09-765794883524
Diffstat (limited to 'MdeModulePkg/Bus/Usb/UsbKbDxe')
-rw-r--r--MdeModulePkg/Bus/Usb/UsbKbDxe/EfiKey.c9
1 files changed, 8 insertions, 1 deletions
diff --git a/MdeModulePkg/Bus/Usb/UsbKbDxe/EfiKey.c b/MdeModulePkg/Bus/Usb/UsbKbDxe/EfiKey.c
index 2733d562d7..278c2da19a 100644
--- a/MdeModulePkg/Bus/Usb/UsbKbDxe/EfiKey.c
+++ b/MdeModulePkg/Bus/Usb/UsbKbDxe/EfiKey.c
@@ -154,7 +154,9 @@ USBKeyboardDriverBindingStart (
UINT8 PollingInterval;
UINT8 PacketSize;
BOOLEAN Found;
+ EFI_TPL OldTpl;
+ OldTpl = gBS->RaiseTPL (TPL_CALLBACK);
//
// Open USB I/O Protocol
//
@@ -167,7 +169,7 @@ USBKeyboardDriverBindingStart (
EFI_OPEN_PROTOCOL_BY_DRIVER
);
if (EFI_ERROR (Status)) {
- return Status;
+ goto ErrorExit1;
}
UsbKeyboardDevice = AllocateZeroPool (sizeof (USB_KB_DEV));
@@ -381,6 +383,7 @@ USBKeyboardDriverBindingStart (
FALSE
);
+ gBS->RestoreTPL (OldTpl);
return EFI_SUCCESS;
//
@@ -407,6 +410,10 @@ ErrorExit:
This->DriverBindingHandle,
Controller
);
+
+ErrorExit1:
+ gBS->RestoreTPL (OldTpl);
+
return Status;
}