]> git.proxmox.com Git - mirror_edk2.git/blobdiff - MdeModulePkg/Universal/Disk/PartitionDxe/Mbr.c
MdeModulePkg/PartitionDxe: Correct the MBR last block value
[mirror_edk2.git] / MdeModulePkg / Universal / Disk / PartitionDxe / Mbr.c
index dac451a14415e1cfed5079d97dbd85194655d454..f0c92aa09a596c235050688705db4fc51433922e 100644 (file)
@@ -135,14 +135,17 @@ PartitionInstallMbrChildHandles (
   EFI_DEVICE_PATH_PROTOCOL     *LastDevicePathNode;\r
   UINT32                       BlockSize;\r
   UINT32                       MediaId;\r
-  EFI_LBA                      LastBlock;\r
+  EFI_LBA                      LastSector;\r
   EFI_PARTITION_INFO_PROTOCOL  PartitionInfo;\r
 \r
   Found           = EFI_NOT_FOUND;\r
 \r
-  BlockSize = BlockIo->Media->BlockSize;\r
-  MediaId   = BlockIo->Media->MediaId;\r
-  LastBlock = BlockIo->Media->LastBlock;\r
+  BlockSize   = BlockIo->Media->BlockSize;\r
+  MediaId     = BlockIo->Media->MediaId;\r
+  LastSector  = DivU64x32 (\r
+                  MultU64x32 (BlockIo->Media->LastBlock + 1, BlockSize),\r
+                  MBR_SIZE\r
+                  ) - 1;\r
 \r
   //\r
   // Ensure the block size can hold the MBR\r
@@ -167,7 +170,7 @@ PartitionInstallMbrChildHandles (
     Found = Status;\r
     goto Done;\r
   }\r
-  if (!PartitionValidMbr (Mbr, LastBlock)) {\r
+  if (!PartitionValidMbr (Mbr, LastSector)) {\r
     goto Done;\r
   }\r
   //\r