]> xenbits.xensource.com Git - people/aperard/ovmf.git/commitdiff
MdeModulePkg: Fix redundant call to RestoreTpl()
authorKen Lautner <kenlautner3@gmail.com>
Fri, 23 Aug 2024 22:39:53 +0000 (15:39 -0700)
committermergify[bot] <37929162+mergify[bot]@users.noreply.github.com>
Wed, 4 Sep 2024 00:53:54 +0000 (00:53 +0000)
Comments out a redundant call to RestoreTpl(). While this does not
technically violate spec on raise/restore TPL, TPL should already be at
the specified level. This extra call introduces an asymmetry between
RaiseTpl and RestoreTpl calls, which makes analysis of TPL correctness
more difficult and hampers certain non-standard TPL usages that some
platforms require.  Additionally, the two TPL variables were renamed to
provide context for each of them.

Signed-off-by: Kenneth Lautner <kenlautner3@gmail.com>
MdeModulePkg/Core/Dxe/Image/Image.c
MdeModulePkg/Universal/Disk/DiskIoDxe/DiskIo.c

index 37fc74d5d1b71388c5887cafaf48f6fa52821d35..8d12f93d7f951e3ae7928283d81fe31119b3cf9d 100644 (file)
@@ -1725,7 +1725,9 @@ CoreStartImage (
   // 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
index 15dfa3699fe9c7c3caccb8ebdf0f1d27e6337002..54b634afe3550751bd736e3f382000746ca42251 100644 (file)
@@ -846,8 +846,8 @@ DiskIo2ReadWriteDisk (
   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
@@ -897,7 +897,7 @@ DiskIo2ReadWriteDisk (
 \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
@@ -978,7 +978,7 @@ DiskIo2ReadWriteDisk (
     }\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
@@ -1013,8 +1013,8 @@ DiskIo2ReadWriteDisk (
     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