|
@@ -872,11 +872,8 @@ static int doc_read_oob(struct mtd_info *mtd, loff_t from,
|
|
|
if (ooblen % DOC_LAYOUT_OOB_SIZE)
|
|
|
return -EINVAL;
|
|
|
|
|
|
- ret = -EINVAL;
|
|
|
- calc_block_sector(from + len, &block0, &block1, &page, &ofs,
|
|
|
- docg3->reliable);
|
|
|
- if (block1 > docg3->max_block)
|
|
|
- goto err;
|
|
|
+ if (from + len > mtd->size)
|
|
|
+ return -EINVAL;
|
|
|
|
|
|
ops->oobretlen = 0;
|
|
|
ops->retlen = 0;
|
|
@@ -1207,7 +1204,7 @@ static int doc_erase(struct mtd_info *mtd, struct erase_info *info)
|
|
|
calc_block_sector(info->addr + info->len, &block0, &block1, &page,
|
|
|
&ofs, docg3->reliable);
|
|
|
ret = -EINVAL;
|
|
|
- if (block1 > docg3->max_block || page || ofs)
|
|
|
+ if (info->addr + info->len > mtd->size || page || ofs)
|
|
|
goto reset_err;
|
|
|
|
|
|
ret = 0;
|
|
@@ -1443,12 +1440,8 @@ static int doc_write_oob(struct mtd_info *mtd, loff_t ofs,
|
|
|
if (len && ooblen &&
|
|
|
(len / DOC_LAYOUT_PAGE_SIZE) != (ooblen / oobdelta))
|
|
|
return -EINVAL;
|
|
|
-
|
|
|
- ret = -EINVAL;
|
|
|
- calc_block_sector(ofs + len, &block0, &block1, &page, &pofs,
|
|
|
- docg3->reliable);
|
|
|
- if (block1 > docg3->max_block)
|
|
|
- goto err;
|
|
|
+ if (ofs + len > mtd->size)
|
|
|
+ return -EINVAL;
|
|
|
|
|
|
ops->oobretlen = 0;
|
|
|
ops->retlen = 0;
|