[U-Boot] [PATCH 1/3] env: Fix up invalid environment in env_init()

This should be set to valid, not invalid. Otherwise the environment will not load after relocation.
Signed-off-by: Simon Glass sjg@chromium.org ---
env/env.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/env/env.c b/env/env.c index 2b8b9611cf..8671f13f8d 100644 --- a/env/env.c +++ b/env/env.c @@ -138,7 +138,7 @@ int env_init(void) ret = drv->init(); if (ret == -ENOENT) { gd->env_addr = (ulong)&default_environment[0]; - gd->env_valid = 0; + gd->env_valid = ENV_VALID;
return 0; } else if (ret) {

Now that we have errors available in the environment driver's load() method, check the return valid.
Signed-off-by: Simon Glass sjg@chromium.org ---
env/env.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/env/env.c b/env/env.c index 8671f13f8d..1255d57f48 100644 --- a/env/env.c +++ b/env/env.c @@ -98,7 +98,7 @@ int env_load(void) return -ENODEV; if (!drv->load) return 0; - drv->load(); /* TODO(sjg@chromium.org): Make this return an error */ + ret = drv->load(); if (ret) { debug("%s: Environment failed to load (err=%d)\n", __func__, ret);

On Sun, Aug 20, 2017 at 04:45:14AM -0600, Simon Glass wrote:
Now that we have errors available in the environment driver's load() method, check the return valid.
Signed-off-by: Simon Glass sjg@chromium.org
Applied to u-boot/master, thanks!

Some of these were missed in the conversion. Signed-off-by: Simon Glass sjg@chromium.org ---
env/common.c | 20 ++++++++++---------- env/eeprom.c | 6 +++--- env/env.c | 2 +- env/flash.c | 4 ++-- env/nand.c | 2 +- env/nvram.c | 2 +- 6 files changed, 18 insertions(+), 18 deletions(-)
diff --git a/env/common.c b/env/common.c index 688d5ab4c8..b403bd5f6c 100644 --- a/env/common.c +++ b/env/common.c @@ -52,7 +52,7 @@ char *env_get_default(const char *name)
/* Pretend that the image is bad. */ gd->flags &= ~GD_FLG_ENV_READY; - gd->env_valid = 0; + gd->env_valid = ENV_INVALID; ret_val = env_get(name); gd->env_valid = really_valid; gd->flags = real_gd_flags; @@ -210,24 +210,24 @@ int env_import_redund(const char *buf1, const char *buf2) set_default_env("!bad CRC"); return 0; } else if (crc1_ok && !crc2_ok) { - gd->env_valid = 1; + gd->env_valid = ENV_VALID; } else if (!crc1_ok && crc2_ok) { - gd->env_valid = 2; + gd->env_valid = ENV_REDUND; } else { /* both ok - check serial */ if (tmp_env1->flags == 255 && tmp_env2->flags == 0) - gd->env_valid = 2; + gd->env_valid = ENV_REDUND; else if (tmp_env2->flags == 255 && tmp_env1->flags == 0) - gd->env_valid = 1; + gd->env_valid = ENV_VALID; else if (tmp_env1->flags > tmp_env2->flags) - gd->env_valid = 1; + gd->env_valid = ENV_VALID; else if (tmp_env2->flags > tmp_env1->flags) - gd->env_valid = 2; + gd->env_valid = ENV_REDUND; else /* flags are equal - almost impossible */ - gd->env_valid = 1; + gd->env_valid = ENV_VALID; }
- if (gd->env_valid == 1) + if (gd->env_valid == ENV_VALID) ep = tmp_env1; else ep = tmp_env2; @@ -271,7 +271,7 @@ void env_relocate(void) env_reloc(); env_htab.change_ok += gd->reloc_off; #endif - if (gd->env_valid == 0) { + if (gd->env_valid == ENV_INVALID) { #if defined(CONFIG_ENV_IS_NOWHERE) || defined(CONFIG_SPL_BUILD) /* Environment not changable */ set_default_env(NULL); diff --git a/env/eeprom.c b/env/eeprom.c index 08ef6307fc..584379ebd2 100644 --- a/env/eeprom.c +++ b/env/eeprom.c @@ -122,7 +122,7 @@ static int env_eeprom_load(void)
if (!crc_ok[0] && !crc_ok[1]) { gd->env_addr = 0; - gd->env_valid = 0; + gd->env_valid = ENV_INVALID; } else if (crc_ok[0] && !crc_ok[1]) { gd->env_valid = ENV_VALID; } else if (!crc_ok[0] && crc_ok[1]) { @@ -166,9 +166,9 @@ static int env_eeprom_load(void) }
if (crc == new) { - gd->env_valid = ENV_VALID; + gd->env_valid = ENV_VALID; } else { - gd->env_valid = 0; + gd->env_valid = ENV_INVALID; } #endif /* CONFIG_ENV_OFFSET_REDUND */
diff --git a/env/env.c b/env/env.c index 1255d57f48..43290d0832 100644 --- a/env/env.c +++ b/env/env.c @@ -74,7 +74,7 @@ int env_get_char(int index) struct env_driver *drv = env_driver_lookup_default(); int ret;
- if (!gd->env_valid) + if (gd->env_valid == ENV_INVALID) return default_environment[index]; if (!drv) return -ENODEV; diff --git a/env/flash.c b/env/flash.c index b60be57a8d..bac10ff985 100644 --- a/env/flash.c +++ b/env/flash.c @@ -94,7 +94,7 @@ static int env_flash_init(void) gd->env_valid = ENV_VALID; } else if (!crc1_ok && !crc2_ok) { gd->env_addr = addr_default; - gd->env_valid = 0; + gd->env_valid = ENV_INVALID; } else if (flag1 == ACTIVE_FLAG && flag2 == OBSOLETE_FLAG) { gd->env_addr = addr1; gd->env_valid = ENV_VALID; @@ -231,7 +231,7 @@ static int env_flash_init(void) }
gd->env_addr = (ulong)&default_environment[0]; - gd->env_valid = 0; + gd->env_valid = ENV_INVALID; return 0; } #endif diff --git a/env/nand.c b/env/nand.c index dea7b00720..8058b55c50 100644 --- a/env/nand.c +++ b/env/nand.c @@ -79,7 +79,7 @@ static int env_nand_init(void)
if (!crc1_ok && !crc2_ok) { gd->env_addr = 0; - gd->env_valid = 0; + gd->env_valid = ENV_INVALID;
return 0; } else if (crc1_ok && !crc2_ok) { diff --git a/env/nvram.c b/env/nvram.c index 5fb3115ce6..c8b34754ef 100644 --- a/env/nvram.c +++ b/env/nvram.c @@ -106,7 +106,7 @@ static int env_nvram_init(void) gd->env_valid = ENV_VALID; } else { gd->env_addr = (ulong)&default_environment[0]; - gd->env_valid = 0; + gd->env_valid = ENV_INVALID; }
return 0;

On Sun, Aug 20, 2017 at 04:45:15AM -0600, Simon Glass wrote:
Some of these were missed in the conversion. Signed-off-by: Simon Glass sjg@chromium.org
Applied to u-boot/master, thanks!
participants (2)
-
Simon Glass
-
Tom Rini