diff options
author | Samuel Thibault <samuel.thibault@ens-lyon.org> | 2020-01-01 13:50:36 +0100 |
---|---|---|
committer | Samuel Thibault <samuel.thibault@ens-lyon.org> | 2020-01-01 13:50:36 +0100 |
commit | 5cd316231c1f67366fda26fb302ace306ca3de3f (patch) | |
tree | 4fdb30e09c70df38ab010664fa39953d75ddb03d /kern | |
parent | fd616c866c22883362886a497311fa7582d3664d (diff) | |
download | gnumach-5cd316231c1f67366fda26fb302ace306ca3de3f.tar.gz gnumach-5cd316231c1f67366fda26fb302ace306ca3de3f.tar.bz2 gnumach-5cd316231c1f67366fda26fb302ace306ca3de3f.zip |
Cope with machine_info.memory_size overflow
* kern/startup.c (setup_main): When memory size overflows
machine_info.memory_size, set to maximum size.
Diffstat (limited to 'kern')
-rw-r--r-- | kern/startup.c | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/kern/startup.c b/kern/startup.c index 19bd7bf6..56e05b3f 100644 --- a/kern/startup.c +++ b/kern/startup.c @@ -89,6 +89,7 @@ extern char *kernel_cmdline; void setup_main(void) { thread_t startup_thread; + phys_addr_t memsize; #if MACH_KDB /* @@ -136,7 +137,11 @@ void setup_main(void) mapable_time_init(); machine_info.max_cpus = NCPUS; - machine_info.memory_size = vm_page_mem_size(); /* XXX phys_addr_t -> vm_size_t */ + memsize = vm_page_mem_size(); + machine_info.memory_size = memsize; + if (machine_info.memory_size < memsize) + /* Overflow, report at least 4GB */ + machine_info.memory_size = ~0; machine_info.avail_cpus = 0; machine_info.major_version = KERNEL_MAJOR_VERSION; machine_info.minor_version = KERNEL_MINOR_VERSION; |