diff --git a/MdeModulePkg/Core/Dxe/Image/Image.c b/MdeModulePkg/Core/Dxe/Image/Image.c index 37fc74d5d1..8d12f93d7f 100644 --- a/MdeModulePkg/Core/Dxe/Image/Image.c +++ b/MdeModulePkg/Core/Dxe/Image/Image.c @@ -1725,7 +1725,9 @@ CoreStartImage ( // Image has completed. Verify the tpl is the same // ASSERT (Image->Tpl == gEfiCurrentTpl); - CoreRestoreTpl (Image->Tpl); + if (Image->Tpl != gEfiCurrentTpl) { + CoreRestoreTpl (Image->Tpl); + } CoreFreePool (Image->JumpBuffer); diff --git a/MdeModulePkg/Universal/Disk/DiskIoDxe/DiskIo.c b/MdeModulePkg/Universal/Disk/DiskIoDxe/DiskIo.c index 15dfa3699f..54b634afe3 100644 --- a/MdeModulePkg/Universal/Disk/DiskIoDxe/DiskIo.c +++ b/MdeModulePkg/Universal/Disk/DiskIoDxe/DiskIo.c @@ -846,8 +846,8 @@ DiskIo2ReadWriteDisk ( LIST_ENTRY Subtasks; DISK_IO_SUBTASK *Subtask; DISK_IO2_TASK *Task; - EFI_TPL OldTpl; - EFI_TPL OldTpl1; + EFI_TPL SubtaskPerformTpl; + EFI_TPL SubtaskLockTpl; BOOLEAN Blocking; BOOLEAN SubtaskBlocking; LIST_ENTRY *SubtasksPtr; @@ -897,7 +897,7 @@ DiskIo2ReadWriteDisk ( ASSERT (!IsListEmpty (SubtasksPtr)); - OldTpl = gBS->RaiseTPL (TPL_CALLBACK); + SubtaskPerformTpl = gBS->RaiseTPL (TPL_CALLBACK); for ( Link = GetFirstNode (SubtasksPtr), NextLink = GetNextNode (SubtasksPtr, Link) ; !IsNull (SubtasksPtr, Link) ; Link = NextLink, NextLink = GetNextNode (SubtasksPtr, NextLink) @@ -978,7 +978,7 @@ DiskIo2ReadWriteDisk ( } } - OldTpl1 = gBS->RaiseTPL (TPL_NOTIFY); + SubtaskLockTpl = gBS->RaiseTPL (TPL_NOTIFY); // // Remove all the remaining subtasks when failure. @@ -1013,8 +1013,8 @@ DiskIo2ReadWriteDisk ( FreePool (Task); } - gBS->RestoreTPL (OldTpl1); - gBS->RestoreTPL (OldTpl); + gBS->RestoreTPL (SubtaskLockTpl); + gBS->RestoreTPL (SubtaskPerformTpl); return Status; }