[U-Boot] [PATCH] [FIX] env_nand: zero-initialize variable nand_erase_options
Daniel Hobi
daniel.hobi at schmid-telecom.ch
Wed May 18 15:21:08 CEST 2011
Commit 30486322 (nand erase: .spread, .part, .chip subcommands)
added a new field to struct nand_erase_options, but forgot to
update common/env_nand.c.
Depending on the stack state and bad block distribution, saveenv()
can thus erase more than CONFIG_ENV_RANGE bytes which may corrupt
the following NAND sectors/partitions.
Signed-off-by: Daniel Hobi <daniel.hobi at schmid-telecom.ch>
---
common/env_nand.c | 8 ++------
1 files changed, 2 insertions(+), 6 deletions(-)
diff --git a/common/env_nand.c b/common/env_nand.c
index 980425a..14446a6 100644
--- a/common/env_nand.c
+++ b/common/env_nand.c
@@ -193,10 +193,8 @@ int saveenv(void)
int ret = 0;
nand_erase_options_t nand_erase_options;
+ memset(&nand_erase_options, 0, sizeof(nand_erase_options));
nand_erase_options.length = CONFIG_ENV_RANGE;
- nand_erase_options.quiet = 0;
- nand_erase_options.jffs2 = 0;
- nand_erase_options.scrub = 0;
if (CONFIG_ENV_RANGE < CONFIG_ENV_SIZE)
return 1;
@@ -249,10 +247,8 @@ int saveenv(void)
char *res;
nand_erase_options_t nand_erase_options;
+ memset(&nand_erase_options, 0, sizeof(nand_erase_options));
nand_erase_options.length = CONFIG_ENV_RANGE;
- nand_erase_options.quiet = 0;
- nand_erase_options.jffs2 = 0;
- nand_erase_options.scrub = 0;
nand_erase_options.offset = CONFIG_ENV_OFFSET;
if (CONFIG_ENV_RANGE < CONFIG_ENV_SIZE)
--
1.7.3.5
More information about the U-Boot
mailing list