> -----Original Message----- > From: devel@edk2.groups.io <devel@edk2.groups.io> On Behalf Of Gao, > Zhichao > Sent: Wednesday, August 12, 2020 9:21 AM > To: devel@edk2.groups.io > Cc: Wang, Jian J <jian.j.w...@intel.com>; Wu, Hao A > <hao.a...@intel.com>; Ni, Ray <ray...@intel.com>; Gary Lin > <g...@suse.com>; Andrew Fish <af...@apple.com> > Subject: [edk2-devel] [PATCH V2 2/3] MdeModulePkg/PartitionDxe: Revert > changes for the special MBR > > REF: https://bugzilla.tianocore.org/show_bug.cgi?id=2823 > > Revert "MdeModulePkg/PartitionDxe: Skip the MBR that add for CD-ROM" > > Follow the spec definition, the ISO 9660 (and UDF) would be checked before > the MBR. So it is not required to skip such MBR talbe that contian the entire > block device.
Reviewed-by: Hao A Wu <hao.a...@intel.com> Best Regards, Hao Wu > > Cc: Jian J Wang <jian.j.w...@intel.com> > Cc: Hao A Wu <hao.a...@intel.com> > Cc: Ray Ni <ray...@intel.com> > Cc: Gary Lin <g...@suse.com> > Cc: Andrew Fish <af...@apple.com> > Signed-off-by: Zhichao Gao <zhichao....@intel.com> > --- > .../Universal/Disk/PartitionDxe/Mbr.c | 37 +++---------------- > 1 file changed, 6 insertions(+), 31 deletions(-) > > diff --git a/MdeModulePkg/Universal/Disk/PartitionDxe/Mbr.c > b/MdeModulePkg/Universal/Disk/PartitionDxe/Mbr.c > index 3830af1ea7..f0c92aa09a 100644 > --- a/MdeModulePkg/Universal/Disk/PartitionDxe/Mbr.c > +++ b/MdeModulePkg/Universal/Disk/PartitionDxe/Mbr.c > @@ -39,7 +39,6 @@ PartitionValidMbr ( > UINT32 StartingLBA; > UINT32 EndingLBA; > UINT32 NewEndingLBA; > - UINT32 SizeInLBA; > INTN Index1; > INTN Index2; > BOOLEAN MbrValid; > @@ -52,34 +51,13 @@ PartitionValidMbr ( > // > MbrValid = FALSE; > for (Index1 = 0; Index1 < MAX_MBR_PARTITIONS; Index1++) { > - StartingLBA = UNPACK_UINT32 (Mbr->Partition[Index1].StartingLBA); > - SizeInLBA = UNPACK_UINT32 (Mbr->Partition[Index1].SizeInLBA); > - > - // > - // If the MBR with partition entry covering the ENTIRE disk, i.e. start > at > LBA0 > - // with whole disk size, we treat it as an invalid MBR partition. > - // > - if ((StartingLBA == 0) && > - (SizeInLBA == (LastLba + 1))) { > - // > - // Refer to the > http://manpages.ubuntu.com/manpages/bionic/man8/mkudffs.8.html > - // "WHOLE DISK VS PARTITION" > - // Some linux ISOs may put the MBR table in the first 512 bytes for > compatibility reasons with Windows. > - // Linux kernel ignores MBR table if contains partition which starts > at > sector 0. > - // Skip it because we don't have the partition check for UDF(El Torito > compatible). > - // It would continue to do the whole disk check in the UDF routine. > - // > - DEBUG ((DEBUG_INFO, "PartitionValidMbr: MBR table has partition > entry covering the ENTIRE disk. Don't treat it as a valid MBR.\n")); > - > - return FALSE; > - } > - > - if (Mbr->Partition[Index1].OSIndicator == 0x00 || SizeInLBA == 0) { > + if (Mbr->Partition[Index1].OSIndicator == 0x00 || UNPACK_UINT32 > + (Mbr->Partition[Index1].SizeInLBA) == 0) { > continue; > } > > MbrValid = TRUE; > - EndingLBA = StartingLBA + SizeInLBA - 1; > + StartingLBA = UNPACK_UINT32 (Mbr->Partition[Index1].StartingLBA); > + EndingLBA = StartingLBA + UNPACK_UINT32 (Mbr- > >Partition[Index1].SizeInLBA) - 1; > if (EndingLBA > LastLba) { > // > // Compatibility Errata: > @@ -99,15 +77,12 @@ PartitionValidMbr ( > } > > for (Index2 = Index1 + 1; Index2 < MAX_MBR_PARTITIONS; Index2++) { > - StartingLBA = UNPACK_UINT32 (Mbr->Partition[Index2].StartingLBA); > - SizeInLBA = UNPACK_UINT32 (Mbr->Partition[Index2].SizeInLBA); > - > - if (Mbr->Partition[Index2].OSIndicator == 0x00 || SizeInLBA == 0) { > + if (Mbr->Partition[Index2].OSIndicator == 0x00 || UNPACK_UINT32 > + (Mbr->Partition[Index2].SizeInLBA) == 0) { > continue; > } > > - NewEndingLBA = StartingLBA + SizeInLBA - 1; > - if (NewEndingLBA >= StartingLBA && StartingLBA <= EndingLBA) { > + NewEndingLBA = UNPACK_UINT32 (Mbr->Partition[Index2].StartingLBA) > + UNPACK_UINT32 (Mbr->Partition[Index2].SizeInLBA) - 1; > + if (NewEndingLBA >= StartingLBA && UNPACK_UINT32 > + (Mbr->Partition[Index2].StartingLBA) <= EndingLBA) { > // > // This region overlaps with the Index1'th region > // > -- > 2.21.0.windows.1 > > > -=-=-=-=-=-=-=-=-=-=-=- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#64051): https://edk2.groups.io/g/devel/message/64051 Mute This Topic: https://groups.io/mt/76139483/21656 Group Owner: devel+ow...@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [arch...@mail-archive.com] -=-=-=-=-=-=-=-=-=-=-=-