diff options
author | York Sun <york.sun@nxp.com> | 2018-02-07 14:17:11 -0800 |
---|---|---|
committer | Tom Rini <trini@konsulko.com> | 2018-02-16 11:12:41 -0500 |
commit | e1caa5841e8a9bc0ee658bdacae0519fa28e1e6a (patch) | |
tree | 97f85fa34ef28e76d53a27eddd76fce321acb333 /env | |
parent | 32fe36574ea5e6ea55313e16547b98a984af7767 (diff) | |
download | u-boot-e1caa5841e8a9bc0ee658bdacae0519fa28e1e6a.zip u-boot-e1caa5841e8a9bc0ee658bdacae0519fa28e1e6a.tar.gz u-boot-e1caa5841e8a9bc0ee658bdacae0519fa28e1e6a.tar.bz2 |
env: Fix env_load_location
Commit 7d714a24d725 ("env: Support multiple environments") added
static variable env_load_location. When saving environmental
variables, this variable is presumed to have the value set before.
In case the value was set before relocation and U-Boot runs from a
NOR flash, this variable wasn't writable. This causes failure when
saving the environment. To save this location, global data must be
used instead.
Signed-off-by: York Sun <york.sun@nxp.com>
CC: Maxime Ripard <maxime.ripard@free-electrons.com>
Diffstat (limited to 'env')
-rw-r--r-- | env/env.c | 8 |
1 files changed, 3 insertions, 5 deletions
@@ -62,8 +62,6 @@ static enum env_location env_locations[] = { #endif }; -static enum env_location env_load_location = ENVL_UNKNOWN; - static bool env_has_inited(enum env_location location) { return gd->env_has_init & BIT(location); @@ -108,11 +106,11 @@ __weak enum env_location env_get_location(enum env_operation op, int prio) if (prio >= ARRAY_SIZE(env_locations)) return ENVL_UNKNOWN; - env_load_location = env_locations[prio]; - return env_load_location; + gd->env_load_location = env_locations[prio]; + return gd->env_load_location; case ENVOP_SAVE: - return env_load_location; + return gd->env_load_location; } return ENVL_UNKNOWN; |