Merge branch 'master' of git://git.denx.de/u-boot-tegra
[oweals/u-boot.git] / env / common.c
index d1a6a5286013a6669f1b8c69e1fa4425a941714e..bd340fe9d52d7bdfb62d68c83ceca6954ccf27ae 100644 (file)
@@ -23,7 +23,10 @@ DECLARE_GLOBAL_DATA_PTR;
 #include <env_default.h>
 
 struct hsearch_data env_htab = {
+#if CONFIG_IS_ENABLED(ENV_SUPPORT)
+       /* defined in flags.c, only compile with ENV_SUPPORT */
        .change_ok = env_flags_validate,
+#endif
 };
 
 /*
@@ -115,7 +118,7 @@ int env_import(const char *buf, int check)
 
                if (crc32(0, ep->data, ENV_SIZE) != crc) {
                        set_default_env("bad CRC", 0);
-                       return -EIO;
+                       return -ENOMSG; /* needed for env_load() */
                }
        }
 
@@ -169,7 +172,7 @@ int env_import_redund(const char *buf1, int buf1_read_fail,
 
        if (!crc1_ok && !crc2_ok) {
                set_default_env("bad CRC", 0);
-               return -EIO;
+               return -ENOMSG; /* needed for env_load() */
        } else if (crc1_ok && !crc2_ok) {
                gd->env_valid = ENV_VALID;
        } else if (!crc1_ok && crc2_ok) {
@@ -225,7 +228,9 @@ void env_relocate(void)
 #if defined(CONFIG_NEEDS_MANUAL_RELOC)
        env_reloc();
        env_fix_drivers();
-       env_htab.change_ok += gd->reloc_off;
+
+       if (env_htab.change_ok)
+               env_htab.change_ok += gd->reloc_off;
 #endif
        if (gd->env_valid == ENV_INVALID) {
 #if defined(CONFIG_ENV_IS_NOWHERE) || defined(CONFIG_SPL_BUILD)