On Thu, 8 Dec 2022 at 00:13, Kinney, Michael D
<michael.d.kin...@intel.com> wrote:
>
> Reviewed-by: Michael D Kinney <michael.d.kin...@intel.com>
>

Thanks

Merged as #3738

>
> > -----Original Message-----
> > From: devel@edk2.groups.io <devel@edk2.groups.io> On Behalf Of Ard 
> > Biesheuvel
> > Sent: Wednesday, December 7, 2022 10:01 AM
> > To: devel@edk2.groups.io
> > Cc: Bi, Dandan <dandan...@intel.com>; Gao, Liming 
> > <gaolim...@byosoft.com.cn>; Wang, Jian J <jian.j.w...@intel.com>; Ard
> > Biesheuvel <a...@kernel.org>
> > Subject: [edk2-devel] [PATCH] MdeModulePkg/DxeCore: Use correct type for 
> > alignment mask
> >
> > The page allocator code in CoreFindFreePagesI() uses a mask derived from
> > its UINTN Alignment argument to align the descriptor end address of a
> > MEMORY_MAP entry to the requested alignment, in order to check whether
> > the descriptor covers enough sufficiently aligned area to satisfy the
> > request.
> >
> > However, on 32-bit architectures, 'Alignment' is a 32-bit type, whereas
> > DescEnd is a 64-bit type, and so the resulting operation performed on
> > the end address comes down to masking with 0xfffff000 instead of the
> > intended 0xffffffff_fffff000. Given the -1 at the end of the expression,
> > the resulting address is 0xffffffff_fffffffff for any descriptor that
> > ends on a 4G aligned boundary, and this is certainly not what was
> > intended.
> >
> > So cast Alignment to UINT64 to ensure that the mask has the right size.
> >
> > Signed-off-by: Ard Biesheuvel <a...@kernel.org>
> > ---
> >  MdeModulePkg/Core/Dxe/Mem/Page.c | 2 +-
> >  1 file changed, 1 insertion(+), 1 deletion(-)
> >
> > diff --git a/MdeModulePkg/Core/Dxe/Mem/Page.c 
> > b/MdeModulePkg/Core/Dxe/Mem/Page.c
> > index 160289c1f9ec..5903ce7ab525 100644
> > --- a/MdeModulePkg/Core/Dxe/Mem/Page.c
> > +++ b/MdeModulePkg/Core/Dxe/Mem/Page.c
> > @@ -1097,7 +1097,7 @@ CoreFindFreePagesI (
> >        DescEnd = MaxAddress;
> >
> >      }
> >
> >
> >
> > -    DescEnd = ((DescEnd + 1) & (~(Alignment - 1))) - 1;
> >
> > +    DescEnd = ((DescEnd + 1) & (~((UINT64)Alignment - 1))) - 1;
> >
> >
> >
> >      // Skip if DescEnd is less than DescStart after alignment clipping
> >
> >      if (DescEnd < DescStart) {
> >
> > --
> > 2.35.1
> >
> >
> >
> > -=-=-=-=-=-=
> > Groups.io Links: You receive all messages sent to this group.
> > View/Reply Online (#97101): https://edk2.groups.io/g/devel/message/97101
> > Mute This Topic: https://groups.io/mt/95520976/1643496
> > Group Owner: devel+ow...@edk2.groups.io
> > Unsubscribe: https://edk2.groups.io/g/devel/unsub 
> > [michael.d.kin...@intel.com]
> > -=-=-=-=-=-=
> >
>


-=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links: You receive all messages sent to this group.
View/Reply Online (#97143): https://edk2.groups.io/g/devel/message/97143
Mute This Topic: https://groups.io/mt/95520976/21656
Group Owner: devel+ow...@edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub [arch...@mail-archive.com]
-=-=-=-=-=-=-=-=-=-=-=-


Reply via email to