[U-Boot] [PATCH] mx53loco: Fix U-Boot corruption after saving the environment

U-Boot binary has grown in such a way that it goes beyond the reserved area for the environment variables.
Running "saveenv" causes U-Boot to hang because of this overlap.
Fix this problem by increasing the CONFIG_ENV_OFFSET size.
Also, in order to prevent this same problem in the future, use CONFIG_BOARD_SIZE_LIMIT, which will detect the overlap in build-time.
CONFIG_BOARD_SIZE_LIMIT does not accept math expressions, so declare CONFIG_ENV_OFFSET with its direct value instead.
Signed-off-by: Fabio Estevam festevam@gmail.com --- include/configs/mx53loco.h | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-)
diff --git a/include/configs/mx53loco.h b/include/configs/mx53loco.h index b734b822dd..65a5993f61 100644 --- a/include/configs/mx53loco.h +++ b/include/configs/mx53loco.h @@ -163,8 +163,18 @@ #define CONFIG_SYS_INIT_SP_ADDR \ (CONFIG_SYS_INIT_RAM_ADDR + CONFIG_SYS_INIT_SP_OFFSET)
-/* environment organization */ -#define CONFIG_ENV_OFFSET (6 * 64 * 1024) +/* Environment starts at 768k = 768 * 1024 = 786432 */ +#define CONFIG_ENV_OFFSET 786432 +/* + * Detect overlap between U-Boot image and environment area in build-time + * + * CONFIG_BOARD_SIZE_LIMIT = CONFIG_ENV_OFFSET - u-boot.imx offset + * CONFIG_BOARD_SIZE_LIMIT = 768k - 1k = 767k = 785408 + * + * Currently CONFIG_BOARD_SIZE_LIMIT does not handle expressions, so + * write the direct value here + */ +#define CONFIG_BOARD_SIZE_LIMIT 785408 #define CONFIG_ENV_SIZE (8 * 1024) #define CONFIG_SYS_MMC_ENV_DEV 0

On Fri, Aug 30, 2019 at 01:58:29PM -0300, Fabio Estevam wrote:
U-Boot binary has grown in such a way that it goes beyond the reserved area for the environment variables.
Running "saveenv" causes U-Boot to hang because of this overlap.
Fix this problem by increasing the CONFIG_ENV_OFFSET size.
Also, in order to prevent this same problem in the future, use CONFIG_BOARD_SIZE_LIMIT, which will detect the overlap in build-time.
CONFIG_BOARD_SIZE_LIMIT does not accept math expressions, so declare CONFIG_ENV_OFFSET with its direct value instead.
Signed-off-by: Fabio Estevam festevam@gmail.com
Gah!
Are there more i.mx platforms that are not setting BOARD_SIZE_LIMIT today? I assume there are, sadly. Can you audit and catch the rest of these likely problems, and add limits so we won't repeat this again. Thanks!

Hi Tom,
On Fri, Aug 30, 2019 at 3:14 PM Tom Rini trini@konsulko.com wrote:
Are there more i.mx platforms that are not setting BOARD_SIZE_LIMIT today? I assume there are, sadly. Can you audit and catch the rest of
Yes, only a very few i.MX boards set BOARD_SIZE_LIMIT currently.
these likely problems, and add limits so we won't repeat this again.
Yes, I can audit this, but this task requires more time and I can do that after 2019.10 is released.
Could this one that fixes mx53qsb be applied for 2019.10?
Thanks

On Mon, Sep 02, 2019 at 01:40:27PM -0300, Fabio Estevam wrote:
Hi Tom,
On Fri, Aug 30, 2019 at 3:14 PM Tom Rini trini@konsulko.com wrote:
Are there more i.mx platforms that are not setting BOARD_SIZE_LIMIT today? I assume there are, sadly. Can you audit and catch the rest of
Yes, only a very few i.MX boards set BOARD_SIZE_LIMIT currently.
these likely problems, and add limits so we won't repeat this again.
Yes, I can audit this, but this task requires more time and I can do that after 2019.10 is released.
Could this one that fixes mx53qsb be applied for 2019.10?
As some is better than none, yes, we should fix and detect this for this platform. But I am a little frustrated in that this is not a new problem and the hook to check for this problem was put in back in June, so I had hoped for more preemptive conversions. It's also on me for having not reminded folks about that too. So please, can we make sure to get this covered ASAP? I think the kludge patch I've posted and linked to before (http://patchwork.ozlabs.org/patch/790476/) can be used here to get a current value calculated and spit out. Moving the question to Kconfig would then make it easier still to: 1. sync all configs 2. loop over appending value to defconfigs 3. re-sync all defconfigs 4. drop first patch, squash next approximately anyhow. Thanks!
participants (2)
-
Fabio Estevam
-
Tom Rini