// Image has completed. Verify the tpl is the same\r
//\r
ASSERT (Image->Tpl == gEfiCurrentTpl);\r
- CoreRestoreTpl (Image->Tpl);\r
+ if (Image->Tpl != gEfiCurrentTpl) {\r
+ CoreRestoreTpl (Image->Tpl);\r
+ }\r
\r
CoreFreePool (Image->JumpBuffer);\r
\r
LIST_ENTRY Subtasks;\r
DISK_IO_SUBTASK *Subtask;\r
DISK_IO2_TASK *Task;\r
- EFI_TPL OldTpl;\r
- EFI_TPL OldTpl1;\r
+ EFI_TPL SubtaskPerformTpl;\r
+ EFI_TPL SubtaskLockTpl;\r
BOOLEAN Blocking;\r
BOOLEAN SubtaskBlocking;\r
LIST_ENTRY *SubtasksPtr;\r
\r
ASSERT (!IsListEmpty (SubtasksPtr));\r
\r
- OldTpl = gBS->RaiseTPL (TPL_CALLBACK);\r
+ SubtaskPerformTpl = gBS->RaiseTPL (TPL_CALLBACK);\r
for ( Link = GetFirstNode (SubtasksPtr), NextLink = GetNextNode (SubtasksPtr, Link)\r
; !IsNull (SubtasksPtr, Link)\r
; Link = NextLink, NextLink = GetNextNode (SubtasksPtr, NextLink)\r
}\r
}\r
\r
- OldTpl1 = gBS->RaiseTPL (TPL_NOTIFY);\r
+ SubtaskLockTpl = gBS->RaiseTPL (TPL_NOTIFY);\r
\r
//\r
// Remove all the remaining subtasks when failure.\r
FreePool (Task);\r
}\r
\r
- gBS->RestoreTPL (OldTpl1);\r
- gBS->RestoreTPL (OldTpl);\r
+ gBS->RestoreTPL (SubtaskLockTpl);\r
+ gBS->RestoreTPL (SubtaskPerformTpl);\r
\r
return Status;\r
}\r