diff options
| -rw-r--r-- | drivers/of/fdt.c | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/drivers/of/fdt.c b/drivers/of/fdt.c index c4cddf0cd96d..b777d8f46bd5 100644 --- a/drivers/of/fdt.c +++ b/drivers/of/fdt.c | |||
| @@ -880,6 +880,21 @@ void __init __weak early_init_dt_add_memory_arch(u64 base, u64 size) | |||
| 880 | const u64 phys_offset = __pa(PAGE_OFFSET); | 880 | const u64 phys_offset = __pa(PAGE_OFFSET); |
| 881 | base &= PAGE_MASK; | 881 | base &= PAGE_MASK; |
| 882 | size &= PAGE_MASK; | 882 | size &= PAGE_MASK; |
| 883 | |||
| 884 | if (sizeof(phys_addr_t) < sizeof(u64)) { | ||
| 885 | if (base > ULONG_MAX) { | ||
| 886 | pr_warning("Ignoring memory block 0x%llx - 0x%llx\n", | ||
| 887 | base, base + size); | ||
| 888 | return; | ||
| 889 | } | ||
| 890 | |||
| 891 | if (base + size > ULONG_MAX) { | ||
| 892 | pr_warning("Ignoring memory range 0x%lx - 0x%llx\n", | ||
| 893 | ULONG_MAX, base + size); | ||
| 894 | size = ULONG_MAX - base; | ||
| 895 | } | ||
| 896 | } | ||
| 897 | |||
| 883 | if (base + size < phys_offset) { | 898 | if (base + size < phys_offset) { |
| 884 | pr_warning("Ignoring memory block 0x%llx - 0x%llx\n", | 899 | pr_warning("Ignoring memory block 0x%llx - 0x%llx\n", |
| 885 | base, base + size); | 900 | base, base + size); |
