]> git.proxmox.com Git - mirror_edk2.git/blobdiff - EdkModulePkg/Universal/Disk/Partition/Dxe/Mbr.c
I fixed following bugs.
[mirror_edk2.git] / EdkModulePkg / Universal / Disk / Partition / Dxe / Mbr.c
index 07e3cbe4591e295ca62961aded6611121f8560af..0930292a9c840714d457913cf5a9ab06e83d92da 100644 (file)
@@ -209,7 +209,7 @@ Returns:
         continue;\r
       }\r
 \r
-      if (Mbr->Partition[Index].OSIndicator == 0xEE) {\r
+      if (Mbr->Partition[Index].OSIndicator == PMBR_GPT_PARTITION) {\r
         //\r
         // This is the guard MBR for the GPT. If you ever see a GPT disk with zero partitions you can get here.\r
         //  We can not produce an MBR BlockIo for this device as the MBR spans the GPT headers. So formating \r
@@ -265,6 +265,11 @@ Returns:
         break;\r
       }\r
 \r
+      if ((Mbr->Partition[0].OSIndicator == EXTENDED_DOS_PARTITION) ||\r
+          (Mbr->Partition[0].OSIndicator == EXTENDED_WINDOWS_PARTITION)) {\r
+        ExtMbrStartingLba = UNPACK_UINT32 (Mbr->Partition[0].StartingLBA);\r
+        continue;\r
+      }\r
       HdDev.PartitionNumber = PartitionNumber ++;\r
       HdDev.PartitionStart  = UNPACK_UINT32 (Mbr->Partition[0].StartingLBA) + ExtMbrStartingLba + ParentHdDev.PartitionStart;\r
       HdDev.PartitionSize   = UNPACK_UINT32 (Mbr->Partition[0].SizeInLBA);\r
@@ -294,8 +299,8 @@ Returns:
         Found = TRUE;\r
       }\r
 \r
-      if (Mbr->Partition[1].OSIndicator != EXTENDED_DOS_PARTITION &&\r
-          Mbr->Partition[1].OSIndicator != EXTENDED_WINDOWS_PARTITION\r
+      if ((Mbr->Partition[1].OSIndicator != EXTENDED_DOS_PARTITION) &&\r
+          (Mbr->Partition[1].OSIndicator != EXTENDED_WINDOWS_PARTITION)\r
           ) {\r
         break;\r
       }\r