aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAshok Reddy Soma <ashok.reddy.soma@amd.com>2023-07-04 00:16:07 -0600
committerTom Rini <trini@konsulko.com>2023-07-17 16:20:08 -0400
commit4dc5e26242101f9090209e659e60422634c8bbcf (patch)
tree966b9beb01a0ca57045bec4b4da2e16cb792757f
parent3430f24bc69d61eadf5b09999d58c468ac67c9fe (diff)
downloadu-boot-4dc5e26242101f9090209e659e60422634c8bbcf.zip
u-boot-4dc5e26242101f9090209e659e60422634c8bbcf.tar.gz
u-boot-4dc5e26242101f9090209e659e60422634c8bbcf.tar.bz2
env: Fix default environment saving issue
When CONFIG_SYS_REDUNDAND_ENVIRONMENT is enabled, by default env is getting saved to redundant environment irrespective of primary env is present or not. It means even if primary and redundant environment are not present, by default, env is getting stored to redundant environment. Even if primary env is present, it is choosing to store in redudndant env. Ideally it should look for primary env and choose to store in primary env if it is present. If both primary and redundant env are not present then it should save in to primary env area. Fix the issue by making env_valid = ENV_INVALID when both the environments are not present. Signed-off-by: Ashok Reddy Soma <ashok.reddy.soma@amd.com> Reviewed-by: Simon Glass <sjg@chromium.org>
-rw-r--r--env/common.c1
1 files changed, 1 insertions, 0 deletions
diff --git a/env/common.c b/env/common.c
index 8beb8e6..0ecdb24 100644
--- a/env/common.c
+++ b/env/common.c
@@ -353,6 +353,7 @@ int env_check_redund(const char *buf1, int buf1_read_fail,
tmp_env2->crc;
if (!crc1_ok && !crc2_ok) {
+ gd->env_valid = ENV_INVALID;
return -ENOMSG; /* needed for env_load() */
} else if (crc1_ok && !crc2_ok) {
gd->env_valid = ENV_VALID;