diff options
author | Zhichao Gao <zhichao.gao@intel.com> | 2020-08-11 14:26:25 +0800 |
---|---|---|
committer | mergify[bot] <37929162+mergify[bot]@users.noreply.github.com> | 2020-08-13 02:17:28 +0000 |
commit | e0eacd7daa6f2e59de2b35a5dfe8bb4c38821e31 (patch) | |
tree | 2766930cfa0a94c975e2357d19fea552f64b3d21 /MdeModulePkg/Universal/Disk | |
parent | 94b7df5c4a6cfb6bd7e80719fe85b11c3408e430 (diff) | |
download | edk2-e0eacd7daa6f2e59de2b35a5dfe8bb4c38821e31.zip edk2-e0eacd7daa6f2e59de2b35a5dfe8bb4c38821e31.tar.gz edk2-e0eacd7daa6f2e59de2b35a5dfe8bb4c38821e31.tar.bz2 |
MdeModulePkg/PartitionDxe: Fix the incorrect LBA size in child hander
REF: https://bugzilla.tianocore.org/show_bug.cgi?id=2843
PartitionInstallChildHandle's parameters Start and End is counted
by the BlockSize, but in the implementation it uses the parent
device's BlockSize to calculate the new Start, End and LastBlock.
It would cause the driver report incorrect block scope and the file
system would fail to be found with right block scope.
So correct it to the right value.
Cc: Jian J Wang <jian.j.wang@intel.com>
Cc: Hao A Wu <hao.a.wu@intel.com>
Cc: Ray Ni <ray.ni@intel.com>
Cc: Gary Lin <glin@suse.com>
Cc: Andrew Fish <afish@apple.com>
Signed-off-by: Zhichao Gao <zhichao.gao@intel.com>
Reviewed-by: Ray Ni <ray.ni@intel.com>
Reviewed-by: Hao A Wu <hao.a.wu@intel.com>
Tested-by: Gary Lin <glin@suse.com>
Diffstat (limited to 'MdeModulePkg/Universal/Disk')
-rw-r--r-- | MdeModulePkg/Universal/Disk/PartitionDxe/Partition.c | 12 |
1 files changed, 3 insertions, 9 deletions
diff --git a/MdeModulePkg/Universal/Disk/PartitionDxe/Partition.c b/MdeModulePkg/Universal/Disk/PartitionDxe/Partition.c index 473e091..f10ce7c 100644 --- a/MdeModulePkg/Universal/Disk/PartitionDxe/Partition.c +++ b/MdeModulePkg/Universal/Disk/PartitionDxe/Partition.c @@ -1149,8 +1149,8 @@ PartitionInstallChildHandle ( Private->Signature = PARTITION_PRIVATE_DATA_SIGNATURE;
- Private->Start = MultU64x32 (Start, ParentBlockIo->Media->BlockSize);
- Private->End = MultU64x32 (End + 1, ParentBlockIo->Media->BlockSize);
+ Private->Start = MultU64x32 (Start, BlockSize);
+ Private->End = MultU64x32 (End + 1, BlockSize);
Private->BlockSize = BlockSize;
Private->ParentBlockIo = ParentBlockIo;
@@ -1187,13 +1187,7 @@ PartitionInstallChildHandle ( Private->Media.IoAlign = 0;
Private->Media.LogicalPartition = TRUE;
- Private->Media.LastBlock = DivU64x32 (
- MultU64x32 (
- End - Start + 1,
- ParentBlockIo->Media->BlockSize
- ),
- BlockSize
- ) - 1;
+ Private->Media.LastBlock = End - Start;
Private->Media.BlockSize = (UINT32) BlockSize;
|