env: make env drivers propagate env_import return value
authorSimon Goldschmidt <sgoldschmidt@de.pepperl-fuchs.com>
Wed, 31 Jan 2018 13:47:12 +0000 (14:47 +0100)
committerTom Rini <trini@konsulko.com>
Thu, 1 Feb 2018 13:05:53 +0000 (08:05 -0500)
For multiple env drivers to correctly implement fallback when
one environment fails to load (e.g. crc error), the return value
of env_import has to be propagated by all env driver's load
function.

Without this change, the first driver that succeeds to load an
environment with an invalid CRC return 0 (success) and no other
drivers are checked.

Signed-off-by: Simon Goldschmidt <sgoldschmidt@de.pepperl-fuchs.com>
Acked-by: Maxime Ripard <maxime.ripard@free-electrons.com>
env/eeprom.c
env/ext4.c
env/fat.c
env/flash.c
env/mmc.c
env/nand.c
env/nvram.c
env/remote.c
env/sata.c
env/ubi.c

index 584379ebd26e3673ffd2d4055640160d24108582..55d19d9d99cc19954c746a1bbd393dbca0db44bc 100644 (file)
@@ -181,9 +181,7 @@ static int env_eeprom_load(void)
        eeprom_bus_read(CONFIG_SYS_DEF_EEPROM_ADDR,
                off, (uchar *)buf_env, CONFIG_ENV_SIZE);
 
-       env_import(buf_env, 1);
-
-       return 0;
+       return env_import(buf_env, 1);
 }
 
 static int env_eeprom_save(void)
index 9cdf28e79f1a56399e2ca8f0982a4993a4ffc4cc..3f3aac57377344c76bdde3c5e358034117a7b088 100644 (file)
@@ -114,8 +114,7 @@ static int env_ext4_load(void)
                goto err_env_relocate;
        }
 
-       env_import(buf, 1);
-       return 0;
+       return env_import(buf, 1);
 
 err_env_relocate:
        set_default_env(NULL);
index 158a9a34357bb8eb791ac3372c977d9a0d2b698e..35f7ab5c6dd47356dfbb16033ce3cc1b99514b8a 100644 (file)
--- a/env/fat.c
+++ b/env/fat.c
@@ -117,8 +117,7 @@ static int env_fat_load(void)
                goto err_env_relocate;
        }
 
-       env_import(buf, 1);
-       return 0;
+       return env_import(buf, 1);
 
 err_env_relocate:
        set_default_env(NULL);
index bac10ff98561232e88adeba9f83f70f6e9ce43cb..ccade77ce388d15b98fa049ff6f85311fd110661 100644 (file)
@@ -351,9 +351,7 @@ static int env_flash_load(void)
                     "reading environment; recovered successfully\n\n");
 #endif /* CONFIG_ENV_ADDR_REDUND */
 
-       env_import((char *)flash_addr, 1);
-
-       return 0;
+       return env_import((char *)flash_addr, 1);
 }
 #endif /* LOADENV */
 
index 8847fdc7e2d6b351cce41baf6fa4f581be80abcb..1058b8c512b0a4792f682068836c2cd8f7af40f9 100644 (file)
--- a/env/mmc.c
+++ b/env/mmc.c
@@ -332,8 +332,7 @@ static int env_mmc_load(void)
                goto fini;
        }
 
-       env_import(buf, 1);
-       ret = 0;
+       ret = env_import(buf, 1);
 
 fini:
        fini_mmc_for_env(mmc);
index 3e8df39c26805f4686aac78767652a21ef4eceaf..904f1c40d6229c877d27b543fd03e4b1d022ca2a 100644 (file)
@@ -378,7 +378,7 @@ static int env_nand_load(void)
                return -EIO;
        }
 
-       env_import(buf, 1);
+       return env_import(buf, 1);
 #endif /* ! ENV_IS_EMBEDDED */
 
        return 0;
index c8b34754efc692690ad3510eb9f790d708b2a72e..6f76fe4b8d38a7ca106c84d89df9402f57a4aa04 100644 (file)
@@ -60,9 +60,7 @@ static int env_nvram_load(void)
 #else
        memcpy(buf, (void *)CONFIG_ENV_ADDR, CONFIG_ENV_SIZE);
 #endif
-       env_import(buf, 1);
-
-       return 0;
+       return env_import(buf, 1);
 }
 
 static int env_nvram_save(void)
index c013fdd4b0194181d50905a54b92e4b169fee6a7..379d0eb1bb333186cae1c26db32df3b30d1765f1 100644 (file)
@@ -49,7 +49,7 @@ static int env_remote_save(void)
 static int env_remote_load(void)
 {
 #ifndef ENV_IS_EMBEDDED
-       env_import((char *)env_ptr, 1);
+       return env_import((char *)env_ptr, 1);
 #endif
 
        return 0;
index a77029774e1f5f46baa09ce09abc18d13f1bde77..4bfe0119df88255b0dae2b21479574f6c043a441 100644 (file)
@@ -113,9 +113,7 @@ static void env_sata_load(void)
                return -EIO;
        }
 
-       env_import(buf, 1);
-
-       return 0;
+       return env_import(buf, 1);
 }
 
 U_BOOT_ENV_LOCATION(sata) = {
index 72c7a7829e556fcc7d732b0acc6863d7bbdad409..d4f4901ac4b1fbfccd0ad8958582e86dbacc8e53 100644 (file)
--- a/env/ubi.c
+++ b/env/ubi.c
@@ -163,9 +163,7 @@ static int env_ubi_load(void)
                return -EIO;
        }
 
-       env_import(buf, 1);
-
-       return 0;
+       return env_import(buf, 1);
 }
 #endif /* CONFIG_SYS_REDUNDAND_ENVIRONMENT */