On Mon, 27 Feb 2023 at 12:55, Marek Vasut
<[email protected]> wrote:
>
> The address returned from 'fdt get addr' command must be mapped
> into sysmem, as this is a working FDT. Access to this address
> without mapping it would lead to crash e.g. in sandbox.
>
> The following command triggers the crash:
> "
> ./u-boot -Dc 'fdt addr $fdtcontroladdr ; fdt get addr var / compatible ; md 
> $var'
> "
>
> Signed-off-by: Marek Vasut <[email protected]>
> ---
> Cc: Heinrich Schuchardt <[email protected]>
> Cc: Simon Glass <[email protected]>
> Cc: Tom Rini <[email protected]>
> ---
>  cmd/fdt.c | 3 ++-
>  1 file changed, 2 insertions(+), 1 deletion(-)

Reviewed-by: Simon Glass <[email protected]>



>
> diff --git a/cmd/fdt.c b/cmd/fdt.c
> index bc19303159d..f2576ab4b38 100644
> --- a/cmd/fdt.c
> +++ b/cmd/fdt.c
> @@ -468,7 +468,8 @@ static int do_fdt(struct cmd_tbl *cmdtp, int flag, int 
> argc, char *const argv[])
>                                         /* Get address */
>                                         char buf[19];
>
> -                                       snprintf(buf, sizeof(buf), "0x%p", 
> nodep);
> +                                       snprintf(buf, sizeof(buf), "0x%lx",
> +                                                (ulong)map_to_sysmem(nodep));
>                                         env_set(var, buf);
>                                 } else if (subcmd[0] == 's') {
>                                         /* Get size */
> --
> 2.39.2
>

Reply via email to