audk/MdeModulePkg/Core/Dxe
Ard Biesheuvel 54d81d06fc 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 <ardb@kernel.org>
Reported-by: Nathan Chancellor <nathan@kernel.org>
Reviewed-by: Michael D Kinney <michael.d.kinney@intel.com>
2022-12-08 18:09:48 +00:00
..
Dispatcher MdeModulePkg: Apply uncrustify changes 2021-12-07 17:24:28 +00:00
DxeMain UefiCpuPkg: Simplify InitializeSeparateExceptionStacks 2022-08-09 04:12:28 +00:00
Event MdeModulePkg: Apply uncrustify changes 2021-12-07 17:24:28 +00:00
FwVol MdeModulePkg: Apply uncrustify changes 2021-12-07 17:24:28 +00:00
FwVolBlock MdeModulePkg: Apply uncrustify changes 2021-12-07 17:24:28 +00:00
Gcd MdeModulePkg: Update Dxe to handle unaccepted memory type 2022-11-01 10:08:10 +00:00
Hand MdeModulePkg: Apply uncrustify changes 2021-12-07 17:24:28 +00:00
Image MdeModulePkg: Fix imbalanced debug macros 2022-09-09 01:42:39 +00:00
Library MdeModulePkg: Apply uncrustify changes 2021-12-07 17:24:28 +00:00
Mem MdeModulePkg/DxeCore: Use correct type for alignment mask 2022-12-08 18:09:48 +00:00
Misc MdeModulePkg: Apply uncrustify changes 2021-12-07 17:24:28 +00:00
SectionExtraction MdeModulePkg: Apply uncrustify changes 2021-12-07 17:24:28 +00:00
DxeCore.uni MdeModulePkg: Replace BSD License with BSD+Patent License 2019-04-09 10:58:08 -07:00
DxeCoreExtra.uni MdeModulePkg: Replace BSD License with BSD+Patent License 2019-04-09 10:58:08 -07:00
DxeMain.h MdeModulePkg: Apply uncrustify changes 2021-12-07 17:24:28 +00:00
DxeMain.inf MdeModulePkg/Core/Dxe: limit FwVol encapsulation section recursion 2020-11-21 01:40:53 +00:00