Branch: refs/heads/master Home: https://github.com/tianocore/edk2 Commit: 54d81d06fc165fcb8eb832acd6a7cf644b029549 https://github.com/tianocore/edk2/commit/54d81d06fc165fcb8eb832acd6a7cf644b029549 Author: Ard Biesheuvel <a...@kernel.org> Date: 2022-12-08 (Thu, 08 Dec 2022)
Changed paths: M MdeModulePkg/Core/Dxe/Mem/Page.c Log Message: ----------- 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> Reported-by: Nathan Chancellor <nat...@kernel.org> Reviewed-by: Michael D Kinney <michael.d.kin...@intel.com> _______________________________________________ edk2-commits mailing list edk2-commits@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/edk2-commits