diff mbox

[U-Boot] Fix fw_env bug for multi-sector environments on NOR flash

Message ID 1314730318-3070-1-git-send-email-yiyang.fei@barco.com
State Changes Requested
Delegated to: Anatolij Gustschin
Headers show

Commit Message

Fei, Yiyang Aug. 30, 2011, 6:51 p.m. UTC
When storing u-boot environment variables on a NOR flash using multiple
sectors, the following error occurs when writing changes using
fw_setenv.

/etc # cat fw_env.config
/dev/mtd12  0x0000  0x20000  0x10000  2

/etc # fw_setenv test test
End of range reached, aborting
Error: can't write fw_env to flash

The reason for the error is that although both sectors are written in
one pass, the loop for the write is executed twice because the
"processed" variable is incremented by the incorrect amount.

Signed-off-by: Yiyang Fei <yiyang.fei@barco.com>
---
 tools/env/fw_env.c |    5 ++---
 1 files changed, 2 insertions(+), 3 deletions(-)

 	if (write_total > count)

Comments

Wolfgang Denk Sept. 7, 2011, 8:55 p.m. UTC | #1
Dear "Yiyang Fei",

In message <1314730318-3070-1-git-send-email-yiyang.fei@barco.com> you wrote:
> When storing u-boot environment variables on a NOR flash using multiple
> sectors, the following error occurs when writing changes using
> fw_setenv.
> 
> /etc # cat fw_env.config
> /dev/mtd12  0x0000  0x20000  0x10000  2
> 
> /etc # fw_setenv test test
> End of range reached, aborting
> Error: can't write fw_env to flash
> 
> The reason for the error is that although both sectors are written in
> one pass, the loop for the write is executed twice because the
> "processed" variable is incremented by the incorrect amount.
> 
> Signed-off-by: Yiyang Fei <yiyang.fei@barco.com>
> ---
>  tools/env/fw_env.c |    5 ++---
>  1 files changed, 2 insertions(+), 3 deletions(-)
> 
> diff --git a/tools/env/fw_env.c b/tools/env/fw_env.c
> index ed6b53f..e6b2cae 100644
> --- a/tools/env/fw_env.c
> +++ b/tools/env/fw_env.c
> @@ -880,9 +880,8 @@ static int flash_write_buf (int dev, int fd, void 
> *buf, size_t count,

Line wrapped and does not apply.

Please fix your mailer and resubmit.

Best regards,

Wolfgang Denk
diff mbox

Patch

diff --git a/tools/env/fw_env.c b/tools/env/fw_env.c
index ed6b53f..e6b2cae 100644
--- a/tools/env/fw_env.c
+++ b/tools/env/fw_env.c
@@ -880,9 +880,8 @@  static int flash_write_buf (int dev, int fd, void 
*buf, size_t count,

 		ioctl (fd, MEMLOCK, &erase);

-		processed  += blocklen;
-		block_seek = 0;
-		blockstart += blocklen;
+		processed  += erasesize;
+		blockstart += erasesize;
 	}