aboutsummaryrefslogtreecommitdiff
path: root/drivers/core/ofnode.c
diff options
context:
space:
mode:
authorSimon Glass <sjg@chromium.org>2019-09-25 08:55:50 -0600
committerBin Meng <bmeng.cn@gmail.com>2019-10-03 21:10:53 +0800
commite18c41fca46a33bf76b4664796e3e132dc71c6cb (patch)
treef29702dda7e243da36e99f9d255d7fe60fce0870 /drivers/core/ofnode.c
parente587886a6112e476a74a26e6cf7068a23723097c (diff)
downloadu-boot-e18c41fca46a33bf76b4664796e3e132dc71c6cb.zip
u-boot-e18c41fca46a33bf76b4664796e3e132dc71c6cb.tar.gz
u-boot-e18c41fca46a33bf76b4664796e3e132dc71c6cb.tar.bz2
dm: core: Correct bad cast in ofnode_get_addr_size_index()
At present this code passes an fdt_addr_t pointer as a u64 pointer which is not safe, 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@chromium.org> Reviewed-by: Bin Meng <bmeng.cn@gmail.com> [bmeng: correct one typo in the commit message] Signed-off-by: Bin Meng <bmeng.cn@gmail.com>
Diffstat (limited to 'drivers/core/ofnode.c')
-rw-r--r--drivers/core/ofnode.c7
1 files changed, 5 insertions, 2 deletions
diff --git a/drivers/core/ofnode.c b/drivers/core/ofnode.c
index 5d47ecc..297f0a0 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));