nand: Fix access to last block in NAND devices
authorStefan Roese <sr@denx.de>
Wed, 9 Dec 2009 08:01:43 +0000 (09:01 +0100)
committerScott Wood <scottwood@freescale.com>
Fri, 11 Dec 2009 19:11:57 +0000 (13:11 -0600)
Currently, the last block of NAND devices can't be accessed. This patch
fixes this issue by correcting the boundary checking (off-by-one error).

Signed-off-by: Stefan Roese <sr@denx.de>
Cc: Scott Wood <scottwood@freescale.com>
Cc: Wolfgang Denk <wd@denx.de>
drivers/mtd/nand/nand_util.c

index 7085d42cc1b92ebc7e4a543863c85867bd7cf245..61bf7e6847fc3a50b7636bc87b770f028b8a9a60 100644 (file)
@@ -490,7 +490,7 @@ int nand_write_skip_bad(nand_info_t *nand, loff_t offset, size_t *length,
 
        len_incl_bad = get_len_incl_bad (nand, offset, *length);
 
-       if ((offset + len_incl_bad) >= nand->size) {
+       if ((offset + len_incl_bad) > nand->size) {
                printf ("Attempt to write outside the flash area\n");
                return -EINVAL;
        }
@@ -562,7 +562,7 @@ int nand_read_skip_bad(nand_info_t *nand, loff_t offset, size_t *length,
 
        len_incl_bad = get_len_incl_bad (nand, offset, *length);
 
-       if ((offset + len_incl_bad) >= nand->size) {
+       if ((offset + len_incl_bad) > nand->size) {
                printf ("Attempt to read outside the flash area\n");
                return -EINVAL;
        }