From: "Ni, Ray" <ray.ni@intel.com>
To: "Gao, Zhichao" <zhichao.gao@intel.com>,
"devel@edk2.groups.io" <devel@edk2.groups.io>
Cc: "Wu, Hao A" <hao.a.wu@intel.com>
Subject: Re: [PATCH V3 1/3] MdeModulePkg/PartitionDxe: Correct the MBR last block value
Date: Tue, 14 Jul 2020 02:06:19 +0000 [thread overview]
Message-ID: <734D49CCEBEEF84792F5B80ED585239D5C612C56@SHSMSX104.ccr.corp.intel.com> (raw)
In-Reply-To: <20200714012259.30504-2-zhichao.gao@intel.com>
Reviewed-by: Ray Ni <ray.ni@intel.com>
> -----Original Message-----
> From: Gao, Zhichao <zhichao.gao@intel.com>
> Sent: Tuesday, July 14, 2020 9:23 AM
> To: devel@edk2.groups.io
> Cc: Wu, Hao A <hao.a.wu@intel.com>; Ni, Ray <ray.ni@intel.com>
> Subject: [PATCH V3 1/3] MdeModulePkg/PartitionDxe: Correct the MBR last
> block value
>
> REF: https://bugzilla.tianocore.org/show_bug.cgi?id=2823
>
> PartitionValidMbr function's second parameter should be the
> last sector of the device. For MBR partition, the block size is
> sector size, i.e. 512 bytes. The original value is media block
> last LBA which is counted by the media block size. And media
> block size is not always 512 bytes, it may be larger which would
> cause the MBR boundary check incorrect. The boundary check is
> based on the partition entry start LBA and size of LBA which
> are both counted by the sector number (512 bytes).
>
> Cc: Hao A Wu <hao.a.wu@intel.com>
> Cc: Ray Ni <ray.ni@intel.com>
> Signed-off-by: Zhichao Gao <zhichao.gao@intel.com>
> ---
> MdeModulePkg/Universal/Disk/PartitionDxe/Mbr.c | 13 ++++++++-----
> 1 file changed, 8 insertions(+), 5 deletions(-)
>
> diff --git a/MdeModulePkg/Universal/Disk/PartitionDxe/Mbr.c
> b/MdeModulePkg/Universal/Disk/PartitionDxe/Mbr.c
> index dac451a144..f0c92aa09a 100644
> --- a/MdeModulePkg/Universal/Disk/PartitionDxe/Mbr.c
> +++ b/MdeModulePkg/Universal/Disk/PartitionDxe/Mbr.c
> @@ -135,14 +135,17 @@ PartitionInstallMbrChildHandles (
> EFI_DEVICE_PATH_PROTOCOL *LastDevicePathNode;
> UINT32 BlockSize;
> UINT32 MediaId;
> - EFI_LBA LastBlock;
> + EFI_LBA LastSector;
> EFI_PARTITION_INFO_PROTOCOL PartitionInfo;
>
> Found = EFI_NOT_FOUND;
>
> - BlockSize = BlockIo->Media->BlockSize;
> - MediaId = BlockIo->Media->MediaId;
> - LastBlock = BlockIo->Media->LastBlock;
> + BlockSize = BlockIo->Media->BlockSize;
> + MediaId = BlockIo->Media->MediaId;
> + LastSector = DivU64x32 (
> + MultU64x32 (BlockIo->Media->LastBlock + 1, BlockSize),
> + MBR_SIZE
> + ) - 1;
>
> //
> // Ensure the block size can hold the MBR
> @@ -167,7 +170,7 @@ PartitionInstallMbrChildHandles (
> Found = Status;
> goto Done;
> }
> - if (!PartitionValidMbr (Mbr, LastBlock)) {
> + if (!PartitionValidMbr (Mbr, LastSector)) {
> goto Done;
> }
> //
> --
> 2.21.0.windows.1
next prev parent reply other threads:[~2020-07-14 2:06 UTC|newest]
Thread overview: 12+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-07-14 1:22 [PATCH V3 0/3] MdeModulePkg/PartitionDxe: Fix the partition check issue Gao, Zhichao
2020-07-14 1:22 ` [PATCH V3 1/3] MdeModulePkg/PartitionDxe: Correct the MBR last block value Gao, Zhichao
2020-07-14 2:06 ` Ni, Ray [this message]
2020-07-14 1:22 ` [PATCH V3 2/3] MdeModulePkg/PartitionDxe: Skip the MBR that add for CD-ROM Gao, Zhichao
2020-07-14 2:04 ` Ni, Ray
2020-07-14 1:22 ` [PATCH V3 3/3] MdeModulePkg/PartitionDxe: Add already start check for child hanldes Gao, Zhichao
2020-07-14 2:04 ` [edk2-devel] " Ni, Ray
2020-07-14 5:56 ` Gao, Zhichao
2020-07-14 6:01 ` Ni, Ray
2020-07-16 3:32 ` Gary Lin
2020-07-16 5:08 ` Gao, Zhichao
2020-07-16 6:05 ` Ni, Ray
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-list from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=734D49CCEBEEF84792F5B80ED585239D5C612C56@SHSMSX104.ccr.corp.intel.com \
--to=devel@edk2.groups.io \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox