[U-Boot] env: mmc: Fix misaligned buffer address when saving envvars to FAT

Tom Rini trini at konsulko.com
Sun May 27 21:24:52 UTC 2018


On Thu, May 17, 2018 at 01:19:41PM +0530, Vipul Kumar wrote:

> From: Gary Mussar <gmussar at ciena.com>
> 
> When doing a u-boot saveenv with the environment in FAT we see the
> following warning:
> 
> ZynqMP> saveenv
> Saving Environment to FAT...
> writing uboot.env
> FAT: Misaligned buffer address (000000007deb9b60)
> done
> 
> This can be eliminated by aligning the environment to an appropriate
> boundary.
> 
> Signed-off-by: Gary Mussar <gmussar at ciena.com>
> Signed-off-by: Vipul Kumar <vipul.kumar at xilinx.com>
> ---
>  include/environment.h | 6 +++++-
>  1 file changed, 5 insertions(+), 1 deletion(-)
> 
> --
> 2.7.4
> 
> This email and any attachments are intended for the sole use of the named recipient(s) and contain(s) confidential information that may be proprietary, privileged or copyrighted under applicable law. If you are not the intended recipient, do not read, copy, or forward this email message or any attachments. Delete this email message and any attachments immediately.
> 
> diff --git a/include/environment.h b/include/environment.h
> index 50c62c5..d6c530d 100644
> --- a/include/environment.h
> +++ b/include/environment.h
> @@ -150,7 +150,11 @@ typedef struct environment_s {
>         unsigned char   flags;          /* active/obsolete flags        */
>  #endif
>         unsigned char   data[ENV_SIZE]; /* Environment data             */
> -} env_t;
> +} env_t
> +#ifdef ARCH_DMA_MINALIGN
> +__aligned(ARCH_DMA_MINALIGN)
> +#endif
> +;
> 
>  #ifdef ENV_IS_EMBEDDED
>  extern env_t environment;

This needs some more work.  The first problem is that ARCH_DMA_MINALIGN
is defined for all platforms.  But it might not be defined in all uses,
for example M5485BFE and other cases of embedded in the binary
environment.  And if we drop the check for ARCH_DMA_MINALIGN existing we
run into problems with needing to add __align to include/compiler.h.

My guess is that what we should do here is that we have another case in
env/fat.c (there's already one) where a variable needs to be __aligned
properly instead.  Can you look down that path?  Thanks!

-- 
Tom
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 819 bytes
Desc: not available
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20180527/69ccda12/attachment.sig>


More information about the U-Boot mailing list