[U-Boot] [PATCH 4/4] common/env_nand.c: calculate crc only when readenv was OK

Phil Sutter phil.sutter at viprinet.com
Wed Nov 21 13:59:21 CET 2012


Calculating the checksum of incompletely read data is useless.

Signed-off-by: Phil Sutter <phil.sutter at viprinet.com>
---
 common/env_nand.c |    4 ++--
 1 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/common/env_nand.c b/common/env_nand.c
index 58ba558..038aa00 100644
--- a/common/env_nand.c
+++ b/common/env_nand.c
@@ -333,8 +333,8 @@ void env_relocate_spec(void)
 	if (read1_fail && read2_fail)
 		puts("No Valid Environment Area found\n");
 
-	crc1_ok = crc32(0, tmp_env1->data, ENV_SIZE) == tmp_env1->crc;
-	crc2_ok = crc32(0, tmp_env2->data, ENV_SIZE) == tmp_env2->crc;
+	crc1_ok = !read1_fail && (crc32(0, tmp_env1->data, ENV_SIZE) == tmp_env1->crc);
+	crc2_ok = !read2_fail && (crc32(0, tmp_env2->data, ENV_SIZE) == tmp_env2->crc);
 
 	if (!crc1_ok && !crc2_ok) {
 		set_default_env("!bad CRC");
-- 
1.7.3.4



More information about the U-Boot mailing list