[PATCH 2/3] MdeModulePkg/PartitionDxe: Remove the check for special MBR


Gao, Zhichao
 

REF: https://bugzilla.tianocore.org/show_bug.cgi?id=2823

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.

Cc: Jian J Wang <jian.j.wang@...>
Cc: Hao A Wu <hao.a.wu@...>
Cc: Ray Ni <ray.ni@...>
Cc: Gary Lin <glin@...>
Cc: Andrew Fish <afish@...>
Signed-off-by: Zhichao Gao <zhichao.gao@...>
---
.../Universal/Disk/PartitionDxe/Mbr.c | 19 -------------------
1 file changed, 19 deletions(-)

diff --git a/MdeModulePkg/Universal/Disk/PartitionDxe/Mbr.c b/MdeModulePkg/Universal/Disk/PartitionDxe/Mbr.c
index 3830af1ea7..822bf03e92 100644
--- a/MdeModulePkg/Universal/Disk/PartitionDxe/Mbr.c
+++ b/MdeModulePkg/Universal/Disk/PartitionDxe/Mbr.c
@@ -55,25 +55,6 @@ PartitionValidMbr (
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) {
continue;
}
--
2.21.0.windows.1


Ni, Ray
 

Zhichao,
Can you please just revert the fix you recently added?

-----Original Message-----
From: Gao, Zhichao <zhichao.gao@...>
Sent: Tuesday, August 11, 2020 2:43 PM
To: devel@edk2.groups.io
Cc: Wang, Jian J <jian.j.wang@...>; Wu, Hao A <hao.a.wu@...>; Ni, Ray <ray.ni@...>; Gary Lin
<glin@...>; Andrew Fish <afish@...>
Subject: [PATCH 2/3] MdeModulePkg/PartitionDxe: Remove the check for special MBR

REF: https://bugzilla.tianocore.org/show_bug.cgi?id=2823

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.

Cc: Jian J Wang <jian.j.wang@...>
Cc: Hao A Wu <hao.a.wu@...>
Cc: Ray Ni <ray.ni@...>
Cc: Gary Lin <glin@...>
Cc: Andrew Fish <afish@...>
Signed-off-by: Zhichao Gao <zhichao.gao@...>
---
.../Universal/Disk/PartitionDxe/Mbr.c | 19 -------------------
1 file changed, 19 deletions(-)

diff --git a/MdeModulePkg/Universal/Disk/PartitionDxe/Mbr.c b/MdeModulePkg/Universal/Disk/PartitionDxe/Mbr.c
index 3830af1ea7..822bf03e92 100644
--- a/MdeModulePkg/Universal/Disk/PartitionDxe/Mbr.c
+++ b/MdeModulePkg/Universal/Disk/PartitionDxe/Mbr.c
@@ -55,25 +55,6 @@ PartitionValidMbr (
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) {
continue;
}
--
2.21.0.windows.1


Gao, Zhichao
 

I also add some variables to calculate StartingLBA and SizeInLBA instead of calculate them when they are needed.
I am fine to revert the whole changes. Just make you aware of this.

Thanks,
Zhichao

-----Original Message-----
From: devel@edk2.groups.io <devel@edk2.groups.io> On Behalf Of Ni, Ray
Sent: Tuesday, August 11, 2020 4:06 PM
To: Gao, Zhichao <zhichao.gao@...>; devel@edk2.groups.io
Cc: Wang, Jian J <jian.j.wang@...>; Wu, Hao A <hao.a.wu@...>;
Gary Lin <glin@...>; Andrew Fish <afish@...>
Subject: Re: [edk2-devel] [PATCH 2/3] MdeModulePkg/PartitionDxe: Remove
the check for special MBR

Zhichao,
Can you please just revert the fix you recently added?

-----Original Message-----
From: Gao, Zhichao <zhichao.gao@...>
Sent: Tuesday, August 11, 2020 2:43 PM
To: devel@edk2.groups.io
Cc: Wang, Jian J <jian.j.wang@...>; Wu, Hao A
<hao.a.wu@...>; Ni, Ray <ray.ni@...>; Gary Lin
<glin@...>; Andrew Fish <afish@...>
Subject: [PATCH 2/3] MdeModulePkg/PartitionDxe: Remove the check for
special MBR

REF: https://bugzilla.tianocore.org/show_bug.cgi?id=2823

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.

Cc: Jian J Wang <jian.j.wang@...>
Cc: Hao A Wu <hao.a.wu@...>
Cc: Ray Ni <ray.ni@...>
Cc: Gary Lin <glin@...>
Cc: Andrew Fish <afish@...>
Signed-off-by: Zhichao Gao <zhichao.gao@...>
---
.../Universal/Disk/PartitionDxe/Mbr.c | 19 -------------------
1 file changed, 19 deletions(-)

diff --git a/MdeModulePkg/Universal/Disk/PartitionDxe/Mbr.c
b/MdeModulePkg/Universal/Disk/PartitionDxe/Mbr.c
index 3830af1ea7..822bf03e92 100644
--- a/MdeModulePkg/Universal/Disk/PartitionDxe/Mbr.c
+++ b/MdeModulePkg/Universal/Disk/PartitionDxe/Mbr.c
@@ -55,25 +55,6 @@ PartitionValidMbr (
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) {
continue;
}
--
2.21.0.windows.1


Ni, Ray
 

I prefer to directly revert the patch. It simplifies the change history.

-----Original Message-----
From: Gao, Zhichao <zhichao.gao@...>
Sent: Tuesday, August 11, 2020 4:29 PM
To: devel@edk2.groups.io; Ni, Ray <ray.ni@...>
Cc: Wang, Jian J <jian.j.wang@...>; Wu, Hao A <hao.a.wu@...>;
Gary Lin <glin@...>; Andrew Fish <afish@...>
Subject: RE: [edk2-devel] [PATCH 2/3] MdeModulePkg/PartitionDxe: Remove
the check for special MBR

I also add some variables to calculate StartingLBA and SizeInLBA instead of
calculate them when they are needed.
I am fine to revert the whole changes. Just make you aware of this.

Thanks,
Zhichao

-----Original Message-----
From: devel@edk2.groups.io <devel@edk2.groups.io> On Behalf Of Ni, Ray
Sent: Tuesday, August 11, 2020 4:06 PM
To: Gao, Zhichao <zhichao.gao@...>; devel@edk2.groups.io
Cc: Wang, Jian J <jian.j.wang@...>; Wu, Hao A <hao.a.wu@...>;
Gary Lin <glin@...>; Andrew Fish <afish@...>
Subject: Re: [edk2-devel] [PATCH 2/3] MdeModulePkg/PartitionDxe: Remove
the check for special MBR

Zhichao,
Can you please just revert the fix you recently added?

-----Original Message-----
From: Gao, Zhichao <zhichao.gao@...>
Sent: Tuesday, August 11, 2020 2:43 PM
To: devel@edk2.groups.io
Cc: Wang, Jian J <jian.j.wang@...>; Wu, Hao A
<hao.a.wu@...>; Ni, Ray <ray.ni@...>; Gary Lin
<glin@...>; Andrew Fish <afish@...>
Subject: [PATCH 2/3] MdeModulePkg/PartitionDxe: Remove the check for
special MBR

REF: https://bugzilla.tianocore.org/show_bug.cgi?id=2823

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.

Cc: Jian J Wang <jian.j.wang@...>
Cc: Hao A Wu <hao.a.wu@...>
Cc: Ray Ni <ray.ni@...>
Cc: Gary Lin <glin@...>
Cc: Andrew Fish <afish@...>
Signed-off-by: Zhichao Gao <zhichao.gao@...>
---
.../Universal/Disk/PartitionDxe/Mbr.c | 19 -------------------
1 file changed, 19 deletions(-)

diff --git a/MdeModulePkg/Universal/Disk/PartitionDxe/Mbr.c
b/MdeModulePkg/Universal/Disk/PartitionDxe/Mbr.c
index 3830af1ea7..822bf03e92 100644
--- a/MdeModulePkg/Universal/Disk/PartitionDxe/Mbr.c
+++ b/MdeModulePkg/Universal/Disk/PartitionDxe/Mbr.c
@@ -55,25 +55,6 @@ PartitionValidMbr (
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) {
continue;
}
--
2.21.0.windows.1