|
@@ -880,6 +880,21 @@ void __init __weak early_init_dt_add_memory_arch(u64 base, u64 size)
|
|
|
const u64 phys_offset = __pa(PAGE_OFFSET);
|
|
|
base &= PAGE_MASK;
|
|
|
size &= PAGE_MASK;
|
|
|
+
|
|
|
+ if (sizeof(phys_addr_t) < sizeof(u64)) {
|
|
|
+ if (base > ULONG_MAX) {
|
|
|
+ pr_warning("Ignoring memory block 0x%llx - 0x%llx\n",
|
|
|
+ base, base + size);
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
+ if (base + size > ULONG_MAX) {
|
|
|
+ pr_warning("Ignoring memory range 0x%lx - 0x%llx\n",
|
|
|
+ ULONG_MAX, base + size);
|
|
|
+ size = ULONG_MAX - base;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
if (base + size < phys_offset) {
|
|
|
pr_warning("Ignoring memory block 0x%llx - 0x%llx\n",
|
|
|
base, base + size);
|