mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git
synced 2025-01-17 13:58:46 +00:00
um: Limit TASK_SIZE to the addressable range
We may have a TASK_SIZE from the host that is bigger than UML is able to address with a three-level pagetable on 64-bit. Guard against that by clipping the maximum TASK_SIZE to the maximum addressable area. Signed-off-by: Benjamin Berg <benjamin.berg@intel.com> Link: https://patch.msgid.link/20240919124511.282088-8-benjamin@sipsolutions.net Signed-off-by: Johannes Berg <johannes.berg@intel.com>
This commit is contained in:
parent
91f0a0c5cc
commit
830003c73d
@ -331,11 +331,16 @@ int __init linux_main(int argc, char **argv)
|
|||||||
stub_start -= PAGE_SIZE;
|
stub_start -= PAGE_SIZE;
|
||||||
host_task_size = stub_start;
|
host_task_size = stub_start;
|
||||||
|
|
||||||
|
/* Limit TASK_SIZE to what is addressable by the page table */
|
||||||
|
task_size = host_task_size;
|
||||||
|
if (task_size > (unsigned long long) PTRS_PER_PGD * PGDIR_SIZE)
|
||||||
|
task_size = PTRS_PER_PGD * PGDIR_SIZE;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* TASK_SIZE needs to be PGDIR_SIZE aligned or else exit_mmap craps
|
* TASK_SIZE needs to be PGDIR_SIZE aligned or else exit_mmap craps
|
||||||
* out
|
* out
|
||||||
*/
|
*/
|
||||||
task_size = host_task_size & PGDIR_MASK;
|
task_size = task_size & PGDIR_MASK;
|
||||||
|
|
||||||
/* OS sanity checks that need to happen before the kernel runs */
|
/* OS sanity checks that need to happen before the kernel runs */
|
||||||
os_early_checks();
|
os_early_checks();
|
||||||
|
Loading…
x
Reference in New Issue
Block a user