[PATCH] env: fat, ubi: Fix gd->env_valid for the first write
    Tom Rini 
    trini at konsulko.com
       
    Tue Oct 21 22:37:01 CEST 2025
    
    
  
As resolved and explained in detail in commit e589d5822cac ("env: spi:
Fix gd->env_valid for the first write") and archived discussion there is
a corner case where we don't do the right thing with redundant
environments. This same exact check was present in the mmc code and
resolved with commit 813a0df27a8a ("env: Invert gd->env_valid for
env_mmc_save") and in the discussion of that patch, I noted that both
fat and ubi (and at the time, sf) were doing the same thing. Take the
time now to correct fat and ubi environment.
Signed-off-by: Tom Rini <trini at konsulko.com>
---
 env/fat.c | 2 +-
 env/ubi.c | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/env/fat.c b/env/fat.c
index 58c279ff7690..7e1648223838 100644
--- a/env/fat.c
+++ b/env/fat.c
@@ -104,7 +104,7 @@ static int env_fat_save(void)
 	}
 
 #ifdef CONFIG_ENV_REDUNDANT
-	gd->env_valid = (gd->env_valid == ENV_REDUND) ? ENV_VALID : ENV_REDUND;
+	gd->env_valid = gd->env_valid == ENV_VALID ? ENV_REDUND : ENV_VALID;
 #endif
 
 	return 0;
diff --git a/env/ubi.c b/env/ubi.c
index f424b1a16e85..59bd96feb488 100644
--- a/env/ubi.c
+++ b/env/ubi.c
@@ -72,7 +72,7 @@ static int env_ubi_save(void)
 
 	puts("done\n");
 
-	gd->env_valid = gd->env_valid == ENV_REDUND ? ENV_VALID : ENV_REDUND;
+	gd->env_valid = gd->env_valid == ENV_VALID ? ENV_REDUND : ENV_VALID;
 
 	return 0;
 }
-- 
2.43.0
    
    
More information about the U-Boot
mailing list