aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/mtd/mtdcore.c
diff options
context:
space:
mode:
authorArtem Bityutskiy <artem.bityutskiy@linux.intel.com>2012-02-03 11:13:23 -0500
committerDavid Woodhouse <David.Woodhouse@intel.com>2012-03-26 19:29:11 -0400
commit664addc248d2fed68d013d26ff2fc796d7134259 (patch)
tree197681f173c14068a8d634c9ab1c889fd02316cf /drivers/mtd/mtdcore.c
parent5def48982b778aaebe201f85af7170b7d0a6619f (diff)
mtd: remove R/O checking duplication
Many drivers check whether the partition is R/O and return -EROFS if yes. Let's stop having duplicated checks and move them to the API functions instead. And again a bit of noise - deleted few too sparse newlines, sorry. Signed-off-by: Artem Bityutskiy <artem.bityutskiy@linux.intel.com> Signed-off-by: David Woodhouse <David.Woodhouse@intel.com>
Diffstat (limited to 'drivers/mtd/mtdcore.c')
-rw-r--r--drivers/mtd/mtdcore.c12
1 files changed, 10 insertions, 2 deletions
diff --git a/drivers/mtd/mtdcore.c b/drivers/mtd/mtdcore.c
index 8d5e103695f9..b9b28647adef 100644
--- a/drivers/mtd/mtdcore.c
+++ b/drivers/mtd/mtdcore.c
@@ -693,6 +693,8 @@ int mtd_erase(struct mtd_info *mtd, struct erase_info *instr)
693{ 693{
694 if (instr->addr > mtd->size || instr->len > mtd->size - instr->addr) 694 if (instr->addr > mtd->size || instr->len > mtd->size - instr->addr)
695 return -EINVAL; 695 return -EINVAL;
696 if (!(mtd->flags & MTD_WRITEABLE))
697 return -EROFS;
696 return mtd->_erase(mtd, instr); 698 return mtd->_erase(mtd, instr);
697} 699}
698EXPORT_SYMBOL_GPL(mtd_erase); 700EXPORT_SYMBOL_GPL(mtd_erase);
@@ -752,10 +754,10 @@ int mtd_write(struct mtd_info *mtd, loff_t to, size_t len, size_t *retlen,
752 const u_char *buf) 754 const u_char *buf)
753{ 755{
754 *retlen = 0; 756 *retlen = 0;
755 if (!mtd->_write)
756 return -EROFS;
757 if (to < 0 || to > mtd->size || len > mtd->size - to) 757 if (to < 0 || to > mtd->size || len > mtd->size - to)
758 return -EINVAL; 758 return -EINVAL;
759 if (!mtd->_write || !(mtd->flags & MTD_WRITEABLE))
760 return -EROFS;
759 return mtd->_write(mtd, to, len, retlen, buf); 761 return mtd->_write(mtd, to, len, retlen, buf);
760} 762}
761EXPORT_SYMBOL_GPL(mtd_write); 763EXPORT_SYMBOL_GPL(mtd_write);
@@ -775,6 +777,8 @@ int mtd_panic_write(struct mtd_info *mtd, loff_t to, size_t len, size_t *retlen,
775 return -EOPNOTSUPP; 777 return -EOPNOTSUPP;
776 if (to < 0 || to > mtd->size || len > mtd->size - to) 778 if (to < 0 || to > mtd->size || len > mtd->size - to)
777 return -EINVAL; 779 return -EINVAL;
780 if (!(mtd->flags & MTD_WRITEABLE))
781 return -EROFS;
778 return mtd->_panic_write(mtd, to, len, retlen, buf); 782 return mtd->_panic_write(mtd, to, len, retlen, buf);
779} 783}
780EXPORT_SYMBOL_GPL(mtd_panic_write); 784EXPORT_SYMBOL_GPL(mtd_panic_write);
@@ -826,6 +830,8 @@ int mtd_block_markbad(struct mtd_info *mtd, loff_t ofs)
826 return -EOPNOTSUPP; 830 return -EOPNOTSUPP;
827 if (ofs < 0 || ofs > mtd->size) 831 if (ofs < 0 || ofs > mtd->size)
828 return -EINVAL; 832 return -EINVAL;
833 if (!(mtd->flags & MTD_WRITEABLE))
834 return -EROFS;
829 return mtd->_block_markbad(mtd, ofs); 835 return mtd->_block_markbad(mtd, ofs);
830} 836}
831EXPORT_SYMBOL_GPL(mtd_block_markbad); 837EXPORT_SYMBOL_GPL(mtd_block_markbad);
@@ -877,6 +883,8 @@ int mtd_writev(struct mtd_info *mtd, const struct kvec *vecs,
877 unsigned long count, loff_t to, size_t *retlen) 883 unsigned long count, loff_t to, size_t *retlen)
878{ 884{
879 *retlen = 0; 885 *retlen = 0;
886 if (!(mtd->flags & MTD_WRITEABLE))
887 return -EROFS;
880 if (!mtd->_writev) 888 if (!mtd->_writev)
881 return default_mtd_writev(mtd, vecs, count, to, retlen); 889 return default_mtd_writev(mtd, vecs, count, to, retlen);
882 return mtd->_writev(mtd, vecs, count, to, retlen); 890 return mtd->_writev(mtd, vecs, count, to, retlen);