summaryrefslogtreecommitdiff
path: root/drivers/mtd/onenand
diff options
context:
space:
mode:
authorAdrian Hunter <ext-adrian.hunter@nokia.com>2007-02-06 00:15:39 (GMT)
committerKyungmin Park <kyungmin.park@samsung.com>2007-02-06 00:15:39 (GMT)
commit52e4200a6da2d98c537b95f7c502ddadf96a6934 (patch)
tree9fc09f25af0a74daa46ace5e91b0d606108967c9 /drivers/mtd/onenand
parent5b4246f1b089746703287fdf422cf15c6d6eff05 (diff)
downloadlinux-52e4200a6da2d98c537b95f7c502ddadf96a6934.tar.xz
[MTD] OneNAND: Do not allow oob write past end of page
OneNAND can write oob to successive pages, but NAND does not do that. For compatibility, disallow OneNAND from writing past the end of the page. Signed-off-by: Adrian Hunter <ext-adrian.hunter@nokia.com> Signed-off-by: Kyungmin Park <kyungmin.park@samsung.com>
Diffstat (limited to 'drivers/mtd/onenand')
-rw-r--r--drivers/mtd/onenand/onenand_base.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/drivers/mtd/onenand/onenand_base.c b/drivers/mtd/onenand/onenand_base.c
index 6df309b..553b24d 100644
--- a/drivers/mtd/onenand/onenand_base.c
+++ b/drivers/mtd/onenand/onenand_base.c
@@ -1186,6 +1186,13 @@ static int onenand_do_write_oob(struct mtd_info *mtd, loff_t to, size_t len,
return -EINVAL;
}
+ /* For compatibility with NAND: Do not allow write past end of page */
+ if (column + len > oobsize) {
+ DEBUG(MTD_DEBUG_LEVEL0, "onenand_write_oob: "
+ "Attempt to write past end of page\n");
+ return -EINVAL;
+ }
+
/* Do not allow reads past end of device */
if (unlikely(to >= mtd->size ||
column + len > ((mtd->size >> this->page_shift) -