diff options
author | yshang1 <yshang1@6f19259b-4bc3-4df7-8a09-765794883524> | 2007-01-12 02:41:42 +0000 |
---|---|---|
committer | yshang1 <yshang1@6f19259b-4bc3-4df7-8a09-765794883524> | 2007-01-12 02:41:42 +0000 |
commit | 35d4cd92bd21a3538f6c300723b715b1df6911bb (patch) | |
tree | d2c1da936676547a9bddf61f2d0acae8b0d5faba /EdkModulePkg/Universal/StatusCode/Dxe/SerialStatusCodeWorker.c | |
parent | affa5a128c1a10424bb2fa9b7dd3d2b3f6091f33 (diff) | |
download | edk2-platforms-35d4cd92bd21a3538f6c300723b715b1df6911bb.tar.xz |
Fix EDKT497. In the patch:
1) Check TPL<=TPL_CALLBACK prior to invoking SerialIO protocol.
2) Check TPL <= TPL_NOTIFY prior to allocate memory in datahub status code driver.
3) Add lock to prevent the critical data.
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@2225 6f19259b-4bc3-4df7-8a09-765794883524
Diffstat (limited to 'EdkModulePkg/Universal/StatusCode/Dxe/SerialStatusCodeWorker.c')
-rw-r--r-- | EdkModulePkg/Universal/StatusCode/Dxe/SerialStatusCodeWorker.c | 13 |
1 files changed, 11 insertions, 2 deletions
diff --git a/EdkModulePkg/Universal/StatusCode/Dxe/SerialStatusCodeWorker.c b/EdkModulePkg/Universal/StatusCode/Dxe/SerialStatusCodeWorker.c index d4912836bc..0b16dfeadb 100644 --- a/EdkModulePkg/Universal/StatusCode/Dxe/SerialStatusCodeWorker.c +++ b/EdkModulePkg/Universal/StatusCode/Dxe/SerialStatusCodeWorker.c @@ -90,10 +90,19 @@ SerialStatusCodeReportWorker ( UINTN CharCount;
VA_LIST Marker;
EFI_DEBUG_INFO *DebugInfo;
+ EFI_TPL CurrentTpl;
- if (FeaturePcdGet (PcdStatusCodeUseEfiSerial) && EfiAtRuntime ()) {
- return EFI_DEVICE_ERROR;
+ if (FeaturePcdGet (PcdStatusCodeUseEfiSerial)) {
+ if (EfiAtRuntime ()) {
+ return EFI_DEVICE_ERROR;
+ }
+ CurrentTpl = gBS->RaiseTPL (EFI_TPL_HIGH_LEVEL);
+ gBS->RestoreTPL (CurrentTpl);
+
+ if (CurrentTpl > EFI_TPL_CALLBACK ) {
+ return EFI_DEVICE_ERROR;
+ }
}
Buffer[0] = '\0';
|