From 2166ebf7831674508425daf50c78e481083c6462 Mon Sep 17 00:00:00 2001 From: Simon Goldschmidt Date: Wed, 31 Jan 2018 14:47:12 +0100 Subject: [PATCH] env: make env drivers propagate env_import return value 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 Acked-by: Maxime Ripard --- env/eeprom.c | 4 +--- env/ext4.c | 3 +-- env/fat.c | 3 +-- env/flash.c | 4 +--- env/mmc.c | 3 +-- env/nand.c | 2 +- env/nvram.c | 4 +--- env/remote.c | 2 +- env/sata.c | 4 +--- env/ubi.c | 4 +--- 10 files changed, 10 insertions(+), 23 deletions(-) diff --git a/env/eeprom.c b/env/eeprom.c index 584379e..55d19d9 100644 --- a/env/eeprom.c +++ b/env/eeprom.c @@ -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) diff --git a/env/ext4.c b/env/ext4.c index 9cdf28e..3f3aac5 100644 --- a/env/ext4.c +++ b/env/ext4.c @@ -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); diff --git a/env/fat.c b/env/fat.c index 158a9a3..35f7ab5 100644 --- 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); diff --git a/env/flash.c b/env/flash.c index bac10ff..ccade77 100644 --- a/env/flash.c +++ b/env/flash.c @@ -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 */ diff --git a/env/mmc.c b/env/mmc.c index 8847fdc..1058b8c 100644 --- 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); diff --git a/env/nand.c b/env/nand.c index 3e8df39..904f1c4 100644 --- a/env/nand.c +++ b/env/nand.c @@ -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; diff --git a/env/nvram.c b/env/nvram.c index c8b3475..6f76fe4 100644 --- a/env/nvram.c +++ b/env/nvram.c @@ -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) diff --git a/env/remote.c b/env/remote.c index c013fdd..379d0eb 100644 --- a/env/remote.c +++ b/env/remote.c @@ -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; diff --git a/env/sata.c b/env/sata.c index a770297..4bfe011 100644 --- a/env/sata.c +++ b/env/sata.c @@ -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) = { diff --git a/env/ubi.c b/env/ubi.c index 72c7a78..d4f4901 100644 --- 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 */