[U-Boot] [PATCH] cmd/fdt.c align data buffer to avoid unaligned word access

Hannes Schmelzer hannes at schmelzer.or.at
Fri Oct 6 17:03:51 UTC 2017


On 09/28/2017 11:29 AM, Bernhard Messerklinger wrote:
> Since the compiler is free to place a char array to any address in
> memory (in this case the stack), also to a non word aligned address the
> function "fdt_prop_parse" runs into troubles upon it wants to write some
> (fdt32_t *) to such a variable (if it has been placed to a none word
> aligned address).
>
> To avoid this we tell the compiler to always align this scratchpad to a
> word aligned address.
>
> Signed-off-by: Bernhard Messerklinger <bernhard.messerklinger at br-automation.com>
> ---
>
>   cmd/fdt.c | 2 +-
>   1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/cmd/fdt.c b/cmd/fdt.c
> index d7654b2c4f..aa9cb4b3c1 100644
> --- a/cmd/fdt.c
> +++ b/cmd/fdt.c
> @@ -256,7 +256,7 @@ static int do_fdt(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
>   		char *pathp;		/* path */
>   		char *prop;		/* property */
>   		int  nodeoffset;	/* node offset from libfdt */
> -		static char data[SCRATCHPAD];	/* storage for the property */
> +		static char data[SCRATCHPAD] __aligned(4);/* property storage */
>   		const void *ptmp;
>   		int  len;		/* new length of the property */
>   		int  ret;		/* return value */
Reviewed-by: Hannes Schmelzer <oe5hpm at oevsv.at>
Tested-by: Hannes Schmelzer <oe5hpm at oevsv.at>



More information about the U-Boot mailing list