Commit bcb1d238716d138c9e16347fc32b3c1ae006339e

Authored by Artem Bityutskiy
Committed by David Woodhouse
1 parent 0dd5235f51

mtd: move zero length verification to MTD API functions

In many places in drivers we verify for the zero length, but this is very
inconsistent across drivers. This is obviously the right thing to do, though.
This patch moves the check to the MTD API functions instead and removes a lot
of duplication.

Signed-off-by: Artem Bityutskiy <artem.bityutskiy@linux.intel.com>
Reviewed-by: Shmulik Ladkani <shmulik.ladkani@gmail.com>
Signed-off-by: David Woodhouse <David.Woodhouse@intel.com>

Showing 13 changed files with 21 additions and 76 deletions Side-by-side Diff

drivers/mtd/chips/cfi_cmdset_0001.c
... ... @@ -1566,9 +1566,6 @@
1566 1566 int chipnum;
1567 1567 unsigned long ofs;
1568 1568  
1569   - if (!len)
1570   - return 0;
1571   -
1572 1569 chipnum = to >> cfi->chipshift;
1573 1570 ofs = to - (chipnum << cfi->chipshift);
1574 1571  
drivers/mtd/chips/cfi_cmdset_0002.c
... ... @@ -1246,9 +1246,6 @@
1246 1246 unsigned long ofs, chipstart;
1247 1247 DECLARE_WAITQUEUE(wait, current);
1248 1248  
1249   - if (!len)
1250   - return 0;
1251   -
1252 1249 chipnum = to >> cfi->chipshift;
1253 1250 ofs = to - (chipnum << cfi->chipshift);
1254 1251 chipstart = cfi->chips[chipnum].start;
... ... @@ -1487,9 +1484,6 @@
1487 1484 int chipnum;
1488 1485 unsigned long ofs;
1489 1486  
1490   - if (!len)
1491   - return 0;
1492   -
1493 1487 chipnum = to >> cfi->chipshift;
1494 1488 ofs = to - (chipnum << cfi->chipshift);
1495 1489  
... ... @@ -1696,9 +1690,6 @@
1696 1690 unsigned long ofs, chipstart;
1697 1691 int ret = 0;
1698 1692 int chipnum;
1699   -
1700   - if (!len)
1701   - return 0;
1702 1693  
1703 1694 chipnum = to >> cfi->chipshift;
1704 1695 ofs = to - (chipnum << cfi->chipshift);
drivers/mtd/chips/cfi_cmdset_0020.c
... ... @@ -615,9 +615,6 @@
615 615 int chipnum;
616 616 unsigned long ofs;
617 617  
618   - if (!len)
619   - return 0;
620   -
621 618 chipnum = to >> cfi->chipshift;
622 619 ofs = to - (chipnum << cfi->chipshift);
623 620  
drivers/mtd/devices/block2mtd.c
... ... @@ -178,9 +178,6 @@
178 178 struct block2mtd_dev *dev = mtd->priv;
179 179 int err;
180 180  
181   - if (!len)
182   - return 0;
183   -
184 181 mutex_lock(&dev->write_mutex);
185 182 err = _block2mtd_write(dev, buf, to, len, retlen);
186 183 mutex_unlock(&dev->write_mutex);
drivers/mtd/devices/lart.c
... ... @@ -437,9 +437,6 @@
437 437 printk (KERN_DEBUG "%s(from = 0x%.8x, len = %d)\n", __func__, (__u32)from, len);
438 438 #endif
439 439  
440   - /* sanity checks */
441   - if (!len) return (0);
442   -
443 440 /* we always read len bytes */
444 441 *retlen = len;
445 442  
drivers/mtd/devices/m25p80.c
... ... @@ -346,10 +346,6 @@
346 346 pr_debug("%s: %s from 0x%08x, len %zd\n", dev_name(&flash->spi->dev),
347 347 __func__, (u32)from, len);
348 348  
349   - /* sanity checks */
350   - if (!len)
351   - return 0;
352   -
353 349 spi_message_init(&m);
354 350 memset(t, 0, (sizeof t));
355 351  
... ... @@ -408,10 +404,6 @@
408 404 pr_debug("%s: %s to 0x%08x, len %zd\n", dev_name(&flash->spi->dev),
409 405 __func__, (u32)to, len);
410 406  
411   - /* sanity checks */
412   - if (!len)
413   - return(0);
414   -
415 407 spi_message_init(&m);
416 408 memset(t, 0, (sizeof t));
417 409  
... ... @@ -494,10 +486,6 @@
494 486  
495 487 pr_debug("%s: %s to 0x%08x, len %zd\n", dev_name(&flash->spi->dev),
496 488 __func__, (u32)to, len);
497   -
498   - /* sanity checks */
499   - if (!len)
500   - return 0;
501 489  
502 490 spi_message_init(&m);
503 491 memset(t, 0, (sizeof t));
drivers/mtd/devices/mtd_dataflash.c
... ... @@ -249,10 +249,6 @@
249 249 pr_debug("%s: read 0x%x..0x%x\n", dev_name(&priv->spi->dev),
250 250 (unsigned)from, (unsigned)(from + len));
251 251  
252   - /* Sanity checks */
253   - if (!len)
254   - return 0;
255   -
256 252 /* Calculate flash page/byte address */
257 253 addr = (((unsigned)from / priv->page_size) << priv->page_offset)
258 254 + ((unsigned)from % priv->page_size);
... ... @@ -321,10 +317,6 @@
321 317 pr_debug("%s: write 0x%x..0x%x\n",
322 318 dev_name(&spi->dev), (unsigned)to, (unsigned)(to + len));
323 319  
324   - /* Sanity checks */
325   - if (!len)
326   - return 0;
327   -
328 320 spi_message_init(&msg);
329 321  
330 322 x[0].tx_buf = command = priv->command;
... ... @@ -479,8 +471,6 @@
479 471  
480 472 if ((off + len) > 64)
481 473 len = 64 - off;
482   - if (len == 0)
483   - return len;
484 474  
485 475 spi_message_init(&m);
486 476  
drivers/mtd/devices/spear_smi.c
... ... @@ -563,9 +563,6 @@
563 563 u32 ctrlreg1, val;
564 564 int ret;
565 565  
566   - if (!len)
567   - return 0;
568   -
569 566 if (!flash || !dev)
570 567 return -ENODEV;
571 568  
... ... @@ -661,9 +658,6 @@
661 658  
662 659 if (!flash || !dev)
663 660 return -ENODEV;
664   -
665   - if (!len)
666   - return 0;
667 661  
668 662 if (flash->bank > dev->num_flashes - 1) {
669 663 dev_err(&dev->pdev->dev, "Invalid Bank Num");
drivers/mtd/devices/sst25l.c
... ... @@ -220,10 +220,6 @@
220 220 unsigned char command[4];
221 221 int ret;
222 222  
223   - /* Sanity checking */
224   - if (len == 0)
225   - return 0;
226   -
227 223 spi_message_init(&message);
228 224 memset(&transfer, 0, sizeof(transfer));
229 225  
... ... @@ -264,10 +260,6 @@
264 260 struct sst25l_flash *flash = to_sst25l_flash(mtd);
265 261 int i, j, ret, bytes, copied = 0;
266 262 unsigned char command[5];
267   -
268   - /* Sanity checks */
269   - if (!len)
270   - return 0;
271 263  
272 264 if ((uint32_t)to % mtd->writesize)
273 265 return -EINVAL;
drivers/mtd/lpddr/lpddr_cmds.c
... ... @@ -639,7 +639,6 @@
639 639 int chipnum;
640 640 unsigned long ofs, vec_seek, i;
641 641 int wbufsize = 1 << lpddr->qinfo->BufSizeShift;
642   -
643 642 size_t len = 0;
644 643  
645 644 for (i = 0; i < count; i++)
drivers/mtd/maps/vmu-flash.c
... ... @@ -360,9 +360,6 @@
360 360 int index = 0, retval, partition, leftover, numblocks;
361 361 unsigned char cx;
362 362  
363   - if (len < 1)
364   - return -EIO;
365   -
366 363 mpart = mtd->priv;
367 364 mdev = mpart->mdev;
368 365 partition = mpart->partition;
... ... @@ -434,11 +431,6 @@
434 431 partition = mpart->partition;
435 432 card = maple_get_drvdata(mdev);
436 433  
437   - /* simple sanity checks */
438   - if (len < 1) {
439   - error = -EIO;
440   - goto failed;
441   - }
442 434 numblocks = card->parts[partition].numblocks;
443 435 if (to + len > numblocks * card->blocklen)
444 436 len = numblocks * card->blocklen - to;
drivers/mtd/mtdcore.c
... ... @@ -695,6 +695,11 @@
695 695 return -EINVAL;
696 696 if (!(mtd->flags & MTD_WRITEABLE))
697 697 return -EROFS;
  698 + if (!instr->len) {
  699 + instr->state = MTD_ERASE_DONE;
  700 + mtd_erase_callback(instr);
  701 + return 0;
  702 + }
698 703 return mtd->_erase(mtd, instr);
699 704 }
700 705 EXPORT_SYMBOL_GPL(mtd_erase);
... ... @@ -713,6 +718,8 @@
713 718 return -EOPNOTSUPP;
714 719 if (from < 0 || from > mtd->size || len > mtd->size - from)
715 720 return -EINVAL;
  721 + if (!len)
  722 + return 0;
716 723 return mtd->_point(mtd, from, len, retlen, virt, phys);
717 724 }
718 725 EXPORT_SYMBOL_GPL(mtd_point);
... ... @@ -724,6 +731,8 @@
724 731 return -EOPNOTSUPP;
725 732 if (from < 0 || from > mtd->size || len > mtd->size - from)
726 733 return -EINVAL;
  734 + if (!len)
  735 + return 0;
727 736 return mtd->_unpoint(mtd, from, len);
728 737 }
729 738 EXPORT_SYMBOL_GPL(mtd_unpoint);
... ... @@ -750,6 +759,8 @@
750 759 *retlen = 0;
751 760 if (from < 0 || from > mtd->size || len > mtd->size - from)
752 761 return -EINVAL;
  762 + if (!len)
  763 + return 0;
753 764 return mtd->_read(mtd, from, len, retlen, buf);
754 765 }
755 766 EXPORT_SYMBOL_GPL(mtd_read);
... ... @@ -762,6 +773,8 @@
762 773 return -EINVAL;
763 774 if (!mtd->_write || !(mtd->flags & MTD_WRITEABLE))
764 775 return -EROFS;
  776 + if (!len)
  777 + return 0;
765 778 return mtd->_write(mtd, to, len, retlen, buf);
766 779 }
767 780 EXPORT_SYMBOL_GPL(mtd_write);
... ... @@ -783,6 +796,8 @@
783 796 return -EINVAL;
784 797 if (!(mtd->flags & MTD_WRITEABLE))
785 798 return -EROFS;
  799 + if (!len)
  800 + return 0;
786 801 return mtd->_panic_write(mtd, to, len, retlen, buf);
787 802 }
788 803 EXPORT_SYMBOL_GPL(mtd_panic_write);
... ... @@ -794,6 +809,8 @@
794 809 return -EOPNOTSUPP;
795 810 if (ofs < 0 || ofs > mtd->size || len > mtd->size - ofs)
796 811 return -EINVAL;
  812 + if (!len)
  813 + return 0;
797 814 return mtd->_lock(mtd, ofs, len);
798 815 }
799 816 EXPORT_SYMBOL_GPL(mtd_lock);
... ... @@ -804,6 +821,8 @@
804 821 return -EOPNOTSUPP;
805 822 if (ofs < 0 || ofs > mtd->size || len > mtd->size - ofs)
806 823 return -EINVAL;
  824 + if (!len)
  825 + return 0;
807 826 return mtd->_unlock(mtd, ofs, len);
808 827 }
809 828 EXPORT_SYMBOL_GPL(mtd_unlock);
... ... @@ -814,6 +833,8 @@
814 833 return -EOPNOTSUPP;
815 834 if (ofs < 0 || ofs > mtd->size || len > mtd->size - ofs)
816 835 return -EINVAL;
  836 + if (!len)
  837 + return 0;
817 838 return mtd->_is_locked(mtd, ofs, len);
818 839 }
819 840 EXPORT_SYMBOL_GPL(mtd_is_locked);
drivers/mtd/nand/nand_base.c
... ... @@ -1614,9 +1614,6 @@
1614 1614 struct mtd_oob_ops ops;
1615 1615 int ret;
1616 1616  
1617   - if (!len)
1618   - return 0;
1619   -
1620 1617 nand_get_device(chip, mtd, FL_READING);
1621 1618 ops.len = len;
1622 1619 ops.datbuf = buf;
... ... @@ -2313,10 +2310,6 @@
2313 2310 struct mtd_oob_ops ops;
2314 2311 int ret;
2315 2312  
2316   - /* Do not allow reads past end of device */
2317   - if (!len)
2318   - return 0;
2319   -
2320 2313 /* Wait for the device to get ready */
2321 2314 panic_nand_wait(mtd, chip, 400);
2322 2315  
... ... @@ -2350,9 +2343,6 @@
2350 2343 struct nand_chip *chip = mtd->priv;
2351 2344 struct mtd_oob_ops ops;
2352 2345 int ret;
2353   -
2354   - if (!len)
2355   - return 0;
2356 2346  
2357 2347 nand_get_device(chip, mtd, FL_WRITING);
2358 2348 ops.len = len;