summaryrefslogtreecommitdiff
path: root/boot
diff options
context:
space:
mode:
authorMarek Vasut <marex@denx.de>2024-04-14 20:37:20 +0200
committerTom Rini <trini@konsulko.com>2024-04-18 16:37:19 -0600
commit16da853114efa97682920356a0eaa6a34270477f (patch)
tree5a7ccba81b6873d6a830b6ed088397d51d9c8de6 /boot
parent91f5dac3f6aff7e1f88adcd91d98b0006e85789b (diff)
downloadu-boot-16da853114efa97682920356a0eaa6a34270477f.tar.gz
u-boot-16da853114efa97682920356a0eaa6a34270477f.tar.bz2
u-boot-16da853114efa97682920356a0eaa6a34270477f.zip
boot: fdt: Turn all addresses and sizes into u64
In case of systems where DRAM bank ends at the edge of 32bit boundary, start + size calculations would overflow. This happens on STM32MP15xx with 1 DRAM bank starting at 0xc0000000 and 1 GiB of DRAM. This is a usual 32bit system DRAM size overflow, fix it by doing all DRAM size and offset calculations using u64 types. This also covers a case where a 32bit PAE system might be able to address up to 36bits of DRAM. Fixes: a4df06e41fa2 ("boot: fdt: Change type of env_get_bootm_low() to phys_addr_t") Signed-off-by: Marek Vasut <marex@denx.de>
Diffstat (limited to 'boot')
-rw-r--r--boot/image-fdt.c5
1 files changed, 1 insertions, 4 deletions
diff --git a/boot/image-fdt.c b/boot/image-fdt.c
index 2b92bdaff1..f09716cba3 100644
--- a/boot/image-fdt.c
+++ b/boot/image-fdt.c
@@ -158,13 +158,10 @@ void boot_fdt_add_mem_rsv_regions(struct lmb *lmb, void *fdt_blob)
*/
int boot_relocate_fdt(struct lmb *lmb, char **of_flat_tree, ulong *of_size)
{
+ u64 start, size, usable, addr, low, mapsize;
void *fdt_blob = *of_flat_tree;
void *of_start = NULL;
- phys_addr_t start, size, usable;
char *fdt_high;
- phys_addr_t addr;
- phys_addr_t low;
- phys_size_t mapsize;
ulong of_len = 0;
int bank;
int err;