[U-Boot] [PATCH 006/126] dm: core: Correct bad cast in ofnode_get_addr_size_index()
Simon Glass
sjg at chromium.org
Wed Sep 25 14:55:50 UTC 2019
At present this code passes an fdt_addr_t pointer as a u64 pointer which
is not save, since sizeof(fdt_addr_t) may be 4, e.g. with sandbox. Correct
this to avoid a stack corruption problem.
Fixes: e679d03b08 (core: ofnode: Add ofnode_get_addr_size_index)
Signed-off-by: Simon Glass <sjg at chromium.org>
---
drivers/core/ofnode.c | 7 +++++--
1 file changed, 5 insertions(+), 2 deletions(-)
diff --git a/drivers/core/ofnode.c b/drivers/core/ofnode.c
index 5d47eccf1d1..297f0a0c7cc 100644
--- a/drivers/core/ofnode.c
+++ b/drivers/core/ofnode.c
@@ -261,12 +261,15 @@ fdt_addr_t ofnode_get_addr_size_index(ofnode node, int index, fdt_size_t *size)
if (ofnode_is_np(node)) {
const __be32 *prop_val;
+ u64 size64;
uint flags;
- prop_val = of_get_address(ofnode_to_np(node), index,
- (u64 *)size, &flags);
+ prop_val = of_get_address(ofnode_to_np(node), index, &size64,
+ &flags);
if (!prop_val)
return FDT_ADDR_T_NONE;
+ if (size)
+ *size = size64;
ns = of_n_size_cells(ofnode_to_np(node));
--
2.23.0.444.g18eeb5a265-goog
More information about the U-Boot
mailing list