Hi Caleb, On Tue, 12 Nov 2024 at 22:21, Caleb Connolly <caleb.conno...@linaro.org> wrote: > > Under some conditions it's possible to hit the null condition here like > when running with OF_LIVE and using the ofnode API before > initr_of_live() is called. There is very little null > checking for this in the FDT framework, so returning null here can > result in weird null pointer conditions. > > Instead let's return the control FDT in the fallback case, this is > usually what the user was expecting. > > Signed-off-by: Caleb Connolly <caleb.conno...@linaro.org> > --- > drivers/core/ofnode.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/drivers/core/ofnode.c b/drivers/core/ofnode.c > index 950895e72a99..7a7f25fc537c 100644 > --- a/drivers/core/ofnode.c > +++ b/drivers/core/ofnode.c > @@ -152,9 +152,9 @@ void *ofnode_lookup_fdt(ofnode node) > uint i = OFTREE_TREE_ID(node.of_offset); > > if (i >= oftree_count) { > log_debug("Invalid tree ID %x\n", i); > - return NULL; > + return (void *)gd->fdt_blob; > } > > return oftree_list[i]; > } else { > -- > 2.47.0 >
Eek I really don't like that, since it will silently return an unexpected value. I think we should panic. Do you know what code path gets you here? More work is needed in livetree to sort of the rough edges, sadly... Regards, Simon