Selaa lähdekoodia

nand: Fix access to last block in NAND devices

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>
Stefan Roese 15 vuotta sitten
vanhempi
commit
f4cfe42758
1 muutettua tiedostoa jossa 2 lisäystä ja 2 poistoa
  1. 2 2
      drivers/mtd/nand/nand_util.c

+ 2 - 2
drivers/mtd/nand/nand_util.c

@@ -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);
 	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");
 		printf ("Attempt to write outside the flash area\n");
 		return -EINVAL;
 		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);
 	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");
 		printf ("Attempt to read outside the flash area\n");
 		return -EINVAL;
 		return -EINVAL;
 	}
 	}