]> git.ipfire.org Git - people/ms/u-boot.git/commitdiff
NAND: env: remember the flags used in the previous environment
authorScott Wood <scottwood@freescale.com>
Tue, 8 Feb 2011 21:25:02 +0000 (15:25 -0600)
committerScott Wood <scottwood@freescale.com>
Tue, 8 Feb 2011 21:25:02 +0000 (15:25 -0600)
Previously, uninitialized stack space was being referenced.

Signed-off-by: Scott Wood <scottwood@freescale.com>
common/env_nand.c

index a4480cb22bc520c72bdcd06a0b762ad46ccc1800..980425a8ee8df5d4592cf25a53170dbdd2b8813e 100644 (file)
@@ -181,7 +181,10 @@ int writeenv(size_t offset, u_char *buf)
 
        return 0;
 }
 
        return 0;
 }
+
 #ifdef CONFIG_ENV_OFFSET_REDUND
 #ifdef CONFIG_ENV_OFFSET_REDUND
+static unsigned char env_flags;
+
 int saveenv(void)
 {
        env_t   env_new;
 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);
                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");
 
        if(gd->env_valid == 1) {
                puts("Erasing redundant NAND...\n");
@@ -399,6 +402,7 @@ void env_relocate_spec(void)
        else
                ep = tmp_env2;
 
        else
                ep = tmp_env2;
 
+       env_flags = ep->flags;
        env_import((char *)ep, 0);
 
        free(tmp_env1);
        env_import((char *)ep, 0);
 
        free(tmp_env1);