summaryrefslogtreecommitdiff
path: root/EdkModulePkg/Universal/StatusCode/Dxe/SerialStatusCodeWorker.c
diff options
context:
space:
mode:
authoryshang1 <yshang1@6f19259b-4bc3-4df7-8a09-765794883524>2007-01-12 02:41:42 +0000
committeryshang1 <yshang1@6f19259b-4bc3-4df7-8a09-765794883524>2007-01-12 02:41:42 +0000
commit35d4cd92bd21a3538f6c300723b715b1df6911bb (patch)
treed2c1da936676547a9bddf61f2d0acae8b0d5faba /EdkModulePkg/Universal/StatusCode/Dxe/SerialStatusCodeWorker.c
parentaffa5a128c1a10424bb2fa9b7dd3d2b3f6091f33 (diff)
downloadedk2-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.c13
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';