summaryrefslogtreecommitdiff
path: root/common/env_nand.c
diff options
context:
space:
mode:
authorScott Wood <scottwood@freescale.com>2011-02-08 15:25:02 -0600
committerScott Wood <scottwood@freescale.com>2011-02-08 15:25:02 -0600
commiteef1d7199d4daf004cfb60914c9e1dc197e32c5d (patch)
tree18ff31768e6a0176b0a78768f0b66cbd0b6729f6 /common/env_nand.c
parent8d4addc3c3fe1a9ea160a5a1a20a1f934ff3fe97 (diff)
downloadu-boot-imx-eef1d7199d4daf004cfb60914c9e1dc197e32c5d.zip
u-boot-imx-eef1d7199d4daf004cfb60914c9e1dc197e32c5d.tar.gz
u-boot-imx-eef1d7199d4daf004cfb60914c9e1dc197e32c5d.tar.bz2
NAND: env: remember the flags used in the previous environment
Previously, uninitialized stack space was being referenced. Signed-off-by: Scott Wood <scottwood@freescale.com>
Diffstat (limited to 'common/env_nand.c')
-rw-r--r--common/env_nand.c6
1 files changed, 5 insertions, 1 deletions
diff --git a/common/env_nand.c b/common/env_nand.c
index a4480cb..980425a 100644
--- a/common/env_nand.c
+++ b/common/env_nand.c
@@ -181,7 +181,10 @@ int writeenv(size_t offset, u_char *buf)
return 0;
}
+
#ifdef CONFIG_ENV_OFFSET_REDUND
+static unsigned char env_flags;
+
int saveenv(void)
{
env_t env_new;
@@ -205,7 +208,7 @@ int saveenv(void)
return 1;
}
env_new.crc = crc32(0, env_new.data, ENV_SIZE);
- ++env_new.flags; /* increase the serial */
+ env_new.flags = ++env_flags; /* increase the serial */
if(gd->env_valid == 1) {
puts("Erasing redundant NAND...\n");
@@ -399,6 +402,7 @@ void env_relocate_spec(void)
else
ep = tmp_env2;
+ env_flags = ep->flags;
env_import((char *)ep, 0);
free(tmp_env1);