diff options
author | Artem Bityutskiy <artem.bityutskiy@linux.intel.com> | 2011-12-28 18:47:46 +0200 |
---|---|---|
committer | David Woodhouse <David.Woodhouse@intel.com> | 2012-01-09 18:26:15 +0000 |
commit | 87e858a97e8a7010aedc01db7cd31cc7c02b0b6a (patch) | |
tree | c5ff8b86ef0ae7891224e620916c58241c3e1799 | |
parent | dac2639f9833e858139d7e07f6ee45fb2191a9f2 (diff) | |
download | op-kernel-dev-87e858a97e8a7010aedc01db7cd31cc7c02b0b6a.zip op-kernel-dev-87e858a97e8a7010aedc01db7cd31cc7c02b0b6a.tar.gz |
mtd: do not use mtd->get_*_prot_info directly
Instead, call 'mtd_get_*_prot_info()' and check for '-EOPNOTSUPP'. While
on it, fix the return code from '-EOPNOTSUPP' to '-EINVAL' for the case
when the mode parameter is invalid.
Signed-off-by: Artem Bityutskiy <artem.bityutskiy@linux.intel.com>
Signed-off-by: David Woodhouse <David.Woodhouse@intel.com>
-rw-r--r-- | drivers/mtd/mtdchar.c | 8 | ||||
-rw-r--r-- | include/linux/mtd/mtd.h | 4 |
2 files changed, 7 insertions, 5 deletions
diff --git a/drivers/mtd/mtdchar.c b/drivers/mtd/mtdchar.c index 287ff0d..49340dc 100644 --- a/drivers/mtd/mtdchar.c +++ b/drivers/mtd/mtdchar.c @@ -919,17 +919,15 @@ static int mtdchar_ioctl(struct file *file, u_int cmd, u_long arg) struct otp_info *buf = kmalloc(4096, GFP_KERNEL); if (!buf) return -ENOMEM; - ret = -EOPNOTSUPP; switch (mfi->mode) { case MTD_FILE_MODE_OTP_FACTORY: - if (mtd->get_fact_prot_info) - ret = mtd_get_fact_prot_info(mtd, buf, 4096); + ret = mtd_get_fact_prot_info(mtd, buf, 4096); break; case MTD_FILE_MODE_OTP_USER: - if (mtd->get_user_prot_info) - ret = mtd_get_user_prot_info(mtd, buf, 4096); + ret = mtd_get_user_prot_info(mtd, buf, 4096); break; default: + ret = -EINVAL; break; } if (ret >= 0) { diff --git a/include/linux/mtd/mtd.h b/include/linux/mtd/mtd.h index 721a63f..7122efd 100644 --- a/include/linux/mtd/mtd.h +++ b/include/linux/mtd/mtd.h @@ -342,6 +342,8 @@ static inline int mtd_write_oob(struct mtd_info *mtd, loff_t to, static inline int mtd_get_fact_prot_info(struct mtd_info *mtd, struct otp_info *buf, size_t len) { + if (!mtd->get_fact_prot_info) + return -EOPNOTSUPP; return mtd->get_fact_prot_info(mtd, buf, len); } @@ -357,6 +359,8 @@ static inline int mtd_get_user_prot_info(struct mtd_info *mtd, struct otp_info *buf, size_t len) { + if (!mtd->get_user_prot_info) + return -EOPNOTSUPP; return mtd->get_user_prot_info(mtd, buf, len); } |