diff options
| author | Artem Bityutskiy <artem.bityutskiy@linux.intel.com> | 2011-12-30 08:57:25 -0500 |
|---|---|---|
| committer | David Woodhouse <David.Woodhouse@intel.com> | 2012-01-09 13:26:05 -0500 |
| commit | 52b020317f65114eeba2ee2cfa70a51a286f1d8a (patch) | |
| tree | a7b071413221fef69cc8b2c2a55cb1a6ba305298 | |
| parent | 4ccf2f1349e681401b5fae73efc87b8d2d70ce0e (diff) | |
mtd: clean-up the default_mtd_writev function
1. Teach 'mtd_write()' function to return '-EROFS' if the write method
is undefined, and remove the corresponding check from
'default_mtd_writev()'.
2. Do not test 'retlen' for NULL - it cannot be NULL.
3. Few minor coding stile clean-ups.
4. Add a kerneldoc comment
Additionally, minor fixes to the kerneldoc comments of the neighbor function.
Signed-off-by: Artem Bityutskiy <artem.bityutskiy@linux.intel.com>
Signed-off-by: David Woodhouse <David.Woodhouse@intel.com>
| -rw-r--r-- | drivers/mtd/mtdcore.c | 41 | ||||
| -rw-r--r-- | include/linux/mtd/mtd.h | 2 |
2 files changed, 24 insertions, 19 deletions
diff --git a/drivers/mtd/mtdcore.c b/drivers/mtd/mtdcore.c index 8bea2d0fdb2..85a3f197e7f 100644 --- a/drivers/mtd/mtdcore.c +++ b/drivers/mtd/mtdcore.c | |||
| @@ -683,10 +683,17 @@ void __put_mtd_device(struct mtd_info *mtd) | |||
| 683 | module_put(mtd->owner); | 683 | module_put(mtd->owner); |
| 684 | } | 684 | } |
| 685 | 685 | ||
| 686 | /* default_mtd_writev - default mtd writev method for MTD devices that | 686 | /* |
| 687 | * don't implement their own | 687 | * default_mtd_writev - the default writev method |
| 688 | * @mtd: mtd device description object pointer | ||
| 689 | * @vecs: the vectors to write | ||
| 690 | * @count: count of vectors in @vecs | ||
| 691 | * @to: the MTD device offset to write to | ||
| 692 | * @retlen: on exit contains the count of bytes written to the MTD device. | ||
| 693 | * | ||
| 694 | * This function returns zero in case of success and a negative error code in | ||
| 695 | * case of failure. | ||
| 688 | */ | 696 | */ |
| 689 | |||
| 690 | int default_mtd_writev(struct mtd_info *mtd, const struct kvec *vecs, | 697 | int default_mtd_writev(struct mtd_info *mtd, const struct kvec *vecs, |
| 691 | unsigned long count, loff_t to, size_t *retlen) | 698 | unsigned long count, loff_t to, size_t *retlen) |
| 692 | { | 699 | { |
| @@ -694,28 +701,24 @@ int default_mtd_writev(struct mtd_info *mtd, const struct kvec *vecs, | |||
| 694 | size_t totlen = 0, thislen; | 701 | size_t totlen = 0, thislen; |
| 695 | int ret = 0; | 702 | int ret = 0; |
| 696 | 703 | ||
| 697 | if(!mtd->write) { | 704 | for (i = 0; i < count; i++) { |
| 698 | ret = -EROFS; | 705 | if (!vecs[i].iov_len) |
| 699 | } else { | 706 | continue; |
| 700 | for (i=0; i<count; i++) { | 707 | ret = mtd_write(mtd, to, vecs[i].iov_len, &thislen, |
| 701 | if (!vecs[i].iov_len) | 708 | vecs[i].iov_base); |
| 702 | continue; | 709 | totlen += thislen; |
| 703 | ret = mtd_write(mtd, to, vecs[i].iov_len, &thislen, | 710 | if (ret || thislen != vecs[i].iov_len) |
| 704 | vecs[i].iov_base); | 711 | break; |
| 705 | totlen += thislen; | 712 | to += vecs[i].iov_len; |
| 706 | if (ret || thislen != vecs[i].iov_len) | ||
| 707 | break; | ||
| 708 | to += vecs[i].iov_len; | ||
| 709 | } | ||
| 710 | } | 713 | } |
| 711 | if (retlen) | 714 | *retlen = totlen; |
| 712 | *retlen = totlen; | ||
| 713 | return ret; | 715 | return ret; |
| 714 | } | 716 | } |
| 715 | 717 | ||
| 716 | /** | 718 | /** |
| 717 | * mtd_kmalloc_up_to - allocate a contiguous buffer up to the specified size | 719 | * mtd_kmalloc_up_to - allocate a contiguous buffer up to the specified size |
| 718 | * @size: A pointer to the ideal or maximum size of the allocation. Points | 720 | * @mtd: mtd device description object pointer |
| 721 | * @size: a pointer to the ideal or maximum size of the allocation, points | ||
| 719 | * to the actual allocation size on success. | 722 | * to the actual allocation size on success. |
| 720 | * | 723 | * |
| 721 | * This routine attempts to allocate a contiguous kernel buffer up to | 724 | * This routine attempts to allocate a contiguous kernel buffer up to |
diff --git a/include/linux/mtd/mtd.h b/include/linux/mtd/mtd.h index 671c89289fc..f0dd5a305b8 100644 --- a/include/linux/mtd/mtd.h +++ b/include/linux/mtd/mtd.h | |||
| @@ -291,6 +291,8 @@ static inline int mtd_write(struct mtd_info *mtd, loff_t to, size_t len, | |||
| 291 | size_t *retlen, const u_char *buf) | 291 | size_t *retlen, const u_char *buf) |
| 292 | { | 292 | { |
| 293 | *retlen = 0; | 293 | *retlen = 0; |
| 294 | if (!mtd->write) | ||
| 295 | return -EROFS; | ||
| 294 | return mtd->write(mtd, to, len, retlen, buf); | 296 | return mtd->write(mtd, to, len, retlen, buf); |
| 295 | } | 297 | } |
| 296 | 298 | ||
