summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorHeinrich Schuchardt <heinrich.schuchardt@canonical.com>2022-11-28 12:14:17 +0300
committerAnup Patel <anup@brainfault.org>2022-12-05 08:03:42 +0300
commite9bc7f175756064cb033097dc039888431cb0e66 (patch)
tree67cbaf7bea0b7956ec04079635bb85e39b3246d2 /lib
parentcc5418461910dc775249e87091b2c6a3ea8d2cd3 (diff)
downloadopensbi-e9bc7f175756064cb033097dc039888431cb0e66.tar.xz
lib: fix fdt_parse_plmt_node()
cpu_offset, cpu_intc_offset must be int to discover failed invocations of fdt_node_offset_by_phandle() or fdt_parent_offset(). After determining cpu_offset we have to check this value and not cpu_intc_offset. Signed-off-by: Heinrich Schuchardt <heinrich.schuchardt@canonical.com> Reviewed-by: Xiang W <wxjstz@126.com> Reviewed-by: Yu Chien Peter Lin <peterlin@andestech.com> Reviewed-by: Bin Meng <bmeng@tinylab.org>
Diffstat (limited to 'lib')
-rw-r--r--lib/utils/fdt/fdt_helper.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/lib/utils/fdt/fdt_helper.c b/lib/utils/fdt/fdt_helper.c
index 87b9fb2..976c96e 100644
--- a/lib/utils/fdt/fdt_helper.c
+++ b/lib/utils/fdt/fdt_helper.c
@@ -805,7 +805,7 @@ int fdt_parse_plmt_node(void *fdt, int nodeoffset, unsigned long *plmt_base,
{
const fdt32_t *val;
int rc, i, count;
- uint64_t reg_addr, reg_size, cpu_offset, cpu_intc_offset;
+ uint64_t reg_addr, reg_size;
u32 phandle, hwirq, hartid, hcount;
if (nodeoffset < 0 || !fdt || !plmt_base ||
@@ -826,6 +826,8 @@ int fdt_parse_plmt_node(void *fdt, int nodeoffset, unsigned long *plmt_base,
hcount = 0;
for (i = 0; i < (count / 2); i++) {
+ int cpu_offset, cpu_intc_offset;
+
phandle = fdt32_to_cpu(val[2 * i]);
hwirq = fdt32_to_cpu(val[2 * i + 1]);
@@ -834,7 +836,7 @@ int fdt_parse_plmt_node(void *fdt, int nodeoffset, unsigned long *plmt_base,
continue;
cpu_offset = fdt_parent_offset(fdt, cpu_intc_offset);
- if (cpu_intc_offset < 0)
+ if (cpu_offset < 0)
continue;
rc = fdt_parse_hart_id(fdt, cpu_offset, &hartid);