[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