Re: [PATCH v2 4/8] x86/kaslr: Initialize mem_limit to the real maximum address

From: Kees Cook
Date: Tue Jul 28 2020 - 14:50:00 EST


On Mon, Jul 27, 2020 at 07:07:57PM -0400, Arvind Sankar wrote:
> On 64-bit, the kernel must be placed below MAXMEM (64TiB with 4-level
> paging or 4PiB with 5-level paging). This is currently not enforced by
> KASLR, which thus implicitly relies on physical memory being limited to
> less than 64TiB.
>
> On 32-bit, the limit is KERNEL_IMAGE_SIZE (512MiB). This is enforced by
> special checks in __process_mem_region.
>
> Initialize mem_limit to the maximum (depending on architecture), instead
> of ULLONG_MAX, and make sure the command-line arguments can only
> decrease it. This makes the enforcement explicit on 64-bit, and
> eliminates the 32-bit specific checks to keep the kernel below 512M.
>
> Check upfront to make sure the minimum address is below the limit before
> doing any work.
>
> Signed-off-by: Arvind Sankar <nivedita@xxxxxxxxxxxx>

Acked-by: Kees Cook <keescook@xxxxxxxxxxxx>

--
Kees Cook