aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--arch/mips/kernel/prom.c14
1 files changed, 13 insertions, 1 deletions
diff --git a/arch/mips/kernel/prom.c b/arch/mips/kernel/prom.c
index 437a174e3ef9..28bf01961bb2 100644
--- a/arch/mips/kernel/prom.c
+++ b/arch/mips/kernel/prom.c
@@ -41,7 +41,19 @@ char *mips_get_machine_name(void)
41#ifdef CONFIG_USE_OF 41#ifdef CONFIG_USE_OF
42void __init early_init_dt_add_memory_arch(u64 base, u64 size) 42void __init early_init_dt_add_memory_arch(u64 base, u64 size)
43{ 43{
44 return add_memory_region(base, size, BOOT_MEM_RAM); 44 if (base >= PHYS_ADDR_MAX) {
45 pr_warn("Trying to add an invalid memory region, skipped\n");
46 return;
47 }
48
49 /* Truncate the passed memory region instead of type casting */
50 if (base + size - 1 >= PHYS_ADDR_MAX || base + size < base) {
51 pr_warn("Truncate memory region %llx @ %llx to size %llx\n",
52 size, base, PHYS_ADDR_MAX - base);
53 size = PHYS_ADDR_MAX - base;
54 }
55
56 add_memory_region(base, size, BOOT_MEM_RAM);
45} 57}
46 58
47int __init early_init_dt_reserve_memory_arch(phys_addr_t base, 59int __init early_init_dt_reserve_memory_arch(phys_addr_t base,