Some ISO images cannot be recognized properly when they are on media whose block size is not 2048 bytes.
Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Hao Wu <[email protected]> --- MdeModulePkg/Universal/Disk/PartitionDxe/ElTorito.c | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/MdeModulePkg/Universal/Disk/PartitionDxe/ElTorito.c b/MdeModulePkg/Universal/Disk/PartitionDxe/ElTorito.c index 2238449..3757d95 100644 --- a/MdeModulePkg/Universal/Disk/PartitionDxe/ElTorito.c +++ b/MdeModulePkg/Universal/Disk/PartitionDxe/ElTorito.c @@ -183,7 +183,7 @@ PartitionInstallElToritoChildHandles ( } SubBlockSize = 512; - SectorCount = Catalog->Boot.SectorCount * (SIZE_2KB / Media->BlockSize); + SectorCount = Catalog->Boot.SectorCount; switch (Catalog->Boot.MediaType) { @@ -233,15 +233,15 @@ PartitionInstallElToritoChildHandles ( // // When the SectorCount < 2, set the Partition as the whole CD. // - if (VolSpaceSize > (Media->LastBlock + 1)) { - CdDev.PartitionSize = (UINT32)(Media->LastBlock - Catalog->Boot.Lba + 1); + if (VolSpaceSize * (SIZE_2KB / Media->BlockSize) > (Media->LastBlock + 1)) { + CdDev.PartitionSize = (UINT32)(Media->LastBlock - Catalog->Boot.Lba * (SIZE_2KB / Media->BlockSize) + 1); } else { - CdDev.PartitionSize = (UINT32)(VolSpaceSize - Catalog->Boot.Lba); + CdDev.PartitionSize = (UINT32)(VolSpaceSize - Catalog->Boot.Lba) * (SIZE_2KB / Media->BlockSize); } } else { CdDev.PartitionSize = DivU64x32 ( MultU64x32 ( - SectorCount, + SectorCount * (SIZE_2KB / Media->BlockSize), SubBlockSize ) + Media->BlockSize - 1, Media->BlockSize @@ -258,7 +258,7 @@ PartitionInstallElToritoChildHandles ( DevicePath, (EFI_DEVICE_PATH_PROTOCOL *) &CdDev, Catalog->Boot.Lba * (SIZE_2KB / Media->BlockSize), - MultU64x32 (Catalog->Boot.Lba + CdDev.PartitionSize - 1, SIZE_2KB / Media->BlockSize), + Catalog->Boot.Lba * (SIZE_2KB / Media->BlockSize) + CdDev.PartitionSize - 1, SubBlockSize, FALSE ); -- 1.9.5.msysgit.0 _______________________________________________ edk2-devel mailing list [email protected] https://lists.01.org/mailman/listinfo/edk2-devel

