]> git.proxmox.com Git - mirror_edk2.git/commitdiff
MdeModulePkg/PartitionDxe: Add break to handle invalid LBA0 in MBR
authorEdwards, Craig <Craig.Edwards@dell.com>
Wed, 5 Jan 2022 16:02:53 +0000 (00:02 +0800)
committermergify[bot] <37929162+mergify[bot]@users.noreply.github.com>
Mon, 10 Jan 2022 07:16:05 +0000 (07:16 +0000)
Read Disk does a modification of ExtMbrStartingLba with the code MultU64x32
(ExtMbrStartingLba, BlockSize) Error detection to see if ExtMbrStartingLBA
has a value of 0. This is invalid as LBA 0 = MBR. After modification, the
next time ExtMbrStartingLba is in this function if ExtMbrStartingLba is set
to 0 in the MBR it never passes the while/do evaluation It is multiplied by
0 by read disk , set to 0 by an invalid MBR and goes back to evaluation
This condition will also cause Ws19 and WS22 to hang, however Microsoft has
developed a hotfix patch that will be released in 2022

Cc: Liming Gao <gaoliming@byosoft.com.cn>
Cc: Jian J Wang <jian.j.wang@intel.com>
Cc: Hao A Wu <hao.a.wu@intel.com>
Cc: Ray Ni <ray.ni@intel.com>
Cc: Zhichao Gao <zhichao.gao@intel.com>
Signed-off-by: Craig Edwards <craig.edwards@dell.com>
Reviewed-by: Hao A Wu <hao.a.wu@intel.com>
MdeModulePkg/Universal/Disk/PartitionDxe/Mbr.c

index 0f8dc54865218cfac507d5167e86e0250aea3bdb..531b3b45ea0f7f6eb0eafd4dafb4ddf99030c379 100644 (file)
@@ -293,6 +293,13 @@ PartitionInstallMbrChildHandles (
           (Mbr->Partition[0].OSIndicator == EXTENDED_WINDOWS_PARTITION))\r
       {\r
         ExtMbrStartingLba = UNPACK_UINT32 (Mbr->Partition[0].StartingLBA);\r
+        //\r
+        // A value of 0 is invalid for StartingLBA\r
+        //\r
+        if (ExtMbrStartingLba == 0) {\r
+          break;\r
+        }\r
+\r
         continue;\r
       }\r
 \r