summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSamuel Thibault <samuel.thibault@ens-lyon.org>2020-01-01 13:50:36 +0100
committerSamuel Thibault <samuel.thibault@ens-lyon.org>2020-01-01 13:50:36 +0100
commit5cd316231c1f67366fda26fb302ace306ca3de3f (patch)
tree4fdb30e09c70df38ab010664fa39953d75ddb03d
parentfd616c866c22883362886a497311fa7582d3664d (diff)
Cope with machine_info.memory_size overflow
* kern/startup.c (setup_main): When memory size overflows machine_info.memory_size, set to maximum size.
-rw-r--r--kern/startup.c7
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;