include: fdt/fdt_helper: Change fdt_get_address() to return root.next_arg1
authorBin Meng <bmeng@tinylab.org>
Thu, 23 Feb 2023 10:40:09 +0000 (18:40 +0800)
committerAnup Patel <anup@brainfault.org>
Mon, 27 Feb 2023 04:34:03 +0000 (10:04 +0530)
commit99d09b601eb3809a4cc2aa409da34bc4fe32f67f
tree8d614f25b7f5240c03518318d4f41019aaff8a80
parent745aaecc64dcae0cfb7e40702a173100af94d582
include: fdt/fdt_helper: Change fdt_get_address() to return root.next_arg1

In sbi_domain_finalize(), when locating the coldboot hart's domain,
the coldboot hart's scratch->arg1 will be overwritten by the domain
configuration. However scratch->arg1 holds the FDT address of the
coldboot hart, and is still being accessed by fdt_get_address() in
later boot process. scratch->arg1 could then contain completely
garbage and lead to a crash.

To fix this, we change fdt_get_address() to return root domain's
next_arg1 as the FDT pointer.

Resolves: https://github.com/riscv-software-src/opensbi/issues/281
Fixes: b1678af210dc ("lib: sbi: Add initial domain support")
Reported-by: Marouene Boubakri <marouene.boubakri@nxp.com>
Signed-off-by: Bin Meng <bmeng@tinylab.org>
Reviewed-by: Anup Patel <anup@brainfault.org>
include/sbi_utils/fdt/fdt_helper.h