Loading drivers/mtd/chips/cfi_cmdset_0001.c +13 −18 Original line number Diff line number Diff line Loading @@ -68,10 +68,10 @@ static int cfi_intelext_read_fact_prot_reg (struct mtd_info *, loff_t, size_t, s static int cfi_intelext_read_user_prot_reg (struct mtd_info *, loff_t, size_t, size_t *, u_char *); static int cfi_intelext_write_user_prot_reg (struct mtd_info *, loff_t, size_t, size_t *, u_char *); static int cfi_intelext_lock_user_prot_reg (struct mtd_info *, loff_t, size_t); static int cfi_intelext_get_fact_prot_info (struct mtd_info *, struct otp_info *, size_t); static int cfi_intelext_get_user_prot_info (struct mtd_info *, struct otp_info *, size_t); static int cfi_intelext_get_fact_prot_info(struct mtd_info *, size_t, size_t *, struct otp_info *); static int cfi_intelext_get_user_prot_info(struct mtd_info *, size_t, size_t *, struct otp_info *); #endif static int cfi_intelext_suspend (struct mtd_info *); static void cfi_intelext_resume (struct mtd_info *); Loading Loading @@ -2394,24 +2394,19 @@ static int cfi_intelext_lock_user_prot_reg(struct mtd_info *mtd, NULL, do_otp_lock, 1); } static int cfi_intelext_get_fact_prot_info(struct mtd_info *mtd, struct otp_info *buf, size_t len) { size_t retlen; int ret; static int cfi_intelext_get_fact_prot_info(struct mtd_info *mtd, size_t len, size_t *retlen, struct otp_info *buf) ret = cfi_intelext_otp_walk(mtd, 0, len, &retlen, (u_char *)buf, NULL, 0); return ret ? : retlen; { return cfi_intelext_otp_walk(mtd, 0, len, retlen, (u_char *)buf, NULL, 0); } static int cfi_intelext_get_user_prot_info(struct mtd_info *mtd, struct otp_info *buf, size_t len) static int cfi_intelext_get_user_prot_info(struct mtd_info *mtd, size_t len, size_t *retlen, struct otp_info *buf) { size_t retlen; int ret; ret = cfi_intelext_otp_walk(mtd, 0, len, &retlen, (u_char *)buf, NULL, 1); return ret ? : retlen; return cfi_intelext_otp_walk(mtd, 0, len, retlen, (u_char *)buf, NULL, 1); } #endif Loading drivers/mtd/devices/mtd_dataflash.c +4 −3 Original line number Diff line number Diff line Loading @@ -439,8 +439,8 @@ static int dataflash_write(struct mtd_info *mtd, loff_t to, size_t len, #ifdef CONFIG_MTD_DATAFLASH_OTP static int dataflash_get_otp_info(struct mtd_info *mtd, struct otp_info *info, size_t len) static int dataflash_get_otp_info(struct mtd_info *mtd, size_t len, size_t *retlen, struct otp_info *info) { /* Report both blocks as identical: bytes 0..64, locked. * Unless the user block changed from all-ones, we can't Loading @@ -449,7 +449,8 @@ static int dataflash_get_otp_info(struct mtd_info *mtd, info->start = 0; info->length = 64; info->locked = 1; return sizeof(*info); *retlen = sizeof(*info); return 0; } static ssize_t otp_read(struct spi_device *spi, unsigned base, Loading drivers/mtd/mtdchar.c +6 −5 Original line number Diff line number Diff line Loading @@ -889,25 +889,26 @@ static int mtdchar_ioctl(struct file *file, u_int cmd, u_long arg) case OTPGETREGIONINFO: { struct otp_info *buf = kmalloc(4096, GFP_KERNEL); size_t retlen; if (!buf) return -ENOMEM; switch (mfi->mode) { case MTD_FILE_MODE_OTP_FACTORY: ret = mtd_get_fact_prot_info(mtd, buf, 4096); ret = mtd_get_fact_prot_info(mtd, 4096, &retlen, buf); break; case MTD_FILE_MODE_OTP_USER: ret = mtd_get_user_prot_info(mtd, buf, 4096); ret = mtd_get_user_prot_info(mtd, 4096, &retlen, buf); break; default: ret = -EINVAL; break; } if (ret >= 0) { if (!ret) { if (cmd == OTPGETREGIONCOUNT) { int nbr = ret / sizeof(struct otp_info); int nbr = retlen / sizeof(struct otp_info); ret = copy_to_user(argp, &nbr, sizeof(int)); } else ret = copy_to_user(argp, buf, ret); ret = copy_to_user(argp, buf, retlen); if (ret) ret = -EFAULT; } Loading drivers/mtd/mtdcore.c +6 −6 Original line number Diff line number Diff line Loading @@ -883,14 +883,14 @@ EXPORT_SYMBOL_GPL(mtd_read_oob); * devices. The user data is one time programmable but the factory data is read * only. */ int mtd_get_fact_prot_info(struct mtd_info *mtd, struct otp_info *buf, size_t len) int mtd_get_fact_prot_info(struct mtd_info *mtd, size_t len, size_t *retlen, struct otp_info *buf) { if (!mtd->_get_fact_prot_info) return -EOPNOTSUPP; if (!len) return 0; return mtd->_get_fact_prot_info(mtd, buf, len); return mtd->_get_fact_prot_info(mtd, len, retlen, buf); } EXPORT_SYMBOL_GPL(mtd_get_fact_prot_info); Loading @@ -906,14 +906,14 @@ int mtd_read_fact_prot_reg(struct mtd_info *mtd, loff_t from, size_t len, } EXPORT_SYMBOL_GPL(mtd_read_fact_prot_reg); int mtd_get_user_prot_info(struct mtd_info *mtd, struct otp_info *buf, size_t len) int mtd_get_user_prot_info(struct mtd_info *mtd, size_t len, size_t *retlen, struct otp_info *buf) { if (!mtd->_get_user_prot_info) return -EOPNOTSUPP; if (!len) return 0; return mtd->_get_user_prot_info(mtd, buf, len); return mtd->_get_user_prot_info(mtd, len, retlen, buf); } EXPORT_SYMBOL_GPL(mtd_get_user_prot_info); Loading drivers/mtd/mtdpart.c +8 −6 Original line number Diff line number Diff line Loading @@ -150,11 +150,12 @@ static int part_read_user_prot_reg(struct mtd_info *mtd, loff_t from, retlen, buf); } static int part_get_user_prot_info(struct mtd_info *mtd, struct otp_info *buf, size_t len) static int part_get_user_prot_info(struct mtd_info *mtd, size_t len, size_t *retlen, struct otp_info *buf) { struct mtd_part *part = PART(mtd); return part->master->_get_user_prot_info(part->master, buf, len); return part->master->_get_user_prot_info(part->master, len, retlen, buf); } static int part_read_fact_prot_reg(struct mtd_info *mtd, loff_t from, Loading @@ -165,11 +166,12 @@ static int part_read_fact_prot_reg(struct mtd_info *mtd, loff_t from, retlen, buf); } static int part_get_fact_prot_info(struct mtd_info *mtd, struct otp_info *buf, size_t len) static int part_get_fact_prot_info(struct mtd_info *mtd, size_t len, size_t *retlen, struct otp_info *buf) { struct mtd_part *part = PART(mtd); return part->master->_get_fact_prot_info(part->master, buf, len); return part->master->_get_fact_prot_info(part->master, len, retlen, buf); } static int part_write(struct mtd_info *mtd, loff_t to, size_t len, Loading Loading
drivers/mtd/chips/cfi_cmdset_0001.c +13 −18 Original line number Diff line number Diff line Loading @@ -68,10 +68,10 @@ static int cfi_intelext_read_fact_prot_reg (struct mtd_info *, loff_t, size_t, s static int cfi_intelext_read_user_prot_reg (struct mtd_info *, loff_t, size_t, size_t *, u_char *); static int cfi_intelext_write_user_prot_reg (struct mtd_info *, loff_t, size_t, size_t *, u_char *); static int cfi_intelext_lock_user_prot_reg (struct mtd_info *, loff_t, size_t); static int cfi_intelext_get_fact_prot_info (struct mtd_info *, struct otp_info *, size_t); static int cfi_intelext_get_user_prot_info (struct mtd_info *, struct otp_info *, size_t); static int cfi_intelext_get_fact_prot_info(struct mtd_info *, size_t, size_t *, struct otp_info *); static int cfi_intelext_get_user_prot_info(struct mtd_info *, size_t, size_t *, struct otp_info *); #endif static int cfi_intelext_suspend (struct mtd_info *); static void cfi_intelext_resume (struct mtd_info *); Loading Loading @@ -2394,24 +2394,19 @@ static int cfi_intelext_lock_user_prot_reg(struct mtd_info *mtd, NULL, do_otp_lock, 1); } static int cfi_intelext_get_fact_prot_info(struct mtd_info *mtd, struct otp_info *buf, size_t len) { size_t retlen; int ret; static int cfi_intelext_get_fact_prot_info(struct mtd_info *mtd, size_t len, size_t *retlen, struct otp_info *buf) ret = cfi_intelext_otp_walk(mtd, 0, len, &retlen, (u_char *)buf, NULL, 0); return ret ? : retlen; { return cfi_intelext_otp_walk(mtd, 0, len, retlen, (u_char *)buf, NULL, 0); } static int cfi_intelext_get_user_prot_info(struct mtd_info *mtd, struct otp_info *buf, size_t len) static int cfi_intelext_get_user_prot_info(struct mtd_info *mtd, size_t len, size_t *retlen, struct otp_info *buf) { size_t retlen; int ret; ret = cfi_intelext_otp_walk(mtd, 0, len, &retlen, (u_char *)buf, NULL, 1); return ret ? : retlen; return cfi_intelext_otp_walk(mtd, 0, len, retlen, (u_char *)buf, NULL, 1); } #endif Loading
drivers/mtd/devices/mtd_dataflash.c +4 −3 Original line number Diff line number Diff line Loading @@ -439,8 +439,8 @@ static int dataflash_write(struct mtd_info *mtd, loff_t to, size_t len, #ifdef CONFIG_MTD_DATAFLASH_OTP static int dataflash_get_otp_info(struct mtd_info *mtd, struct otp_info *info, size_t len) static int dataflash_get_otp_info(struct mtd_info *mtd, size_t len, size_t *retlen, struct otp_info *info) { /* Report both blocks as identical: bytes 0..64, locked. * Unless the user block changed from all-ones, we can't Loading @@ -449,7 +449,8 @@ static int dataflash_get_otp_info(struct mtd_info *mtd, info->start = 0; info->length = 64; info->locked = 1; return sizeof(*info); *retlen = sizeof(*info); return 0; } static ssize_t otp_read(struct spi_device *spi, unsigned base, Loading
drivers/mtd/mtdchar.c +6 −5 Original line number Diff line number Diff line Loading @@ -889,25 +889,26 @@ static int mtdchar_ioctl(struct file *file, u_int cmd, u_long arg) case OTPGETREGIONINFO: { struct otp_info *buf = kmalloc(4096, GFP_KERNEL); size_t retlen; if (!buf) return -ENOMEM; switch (mfi->mode) { case MTD_FILE_MODE_OTP_FACTORY: ret = mtd_get_fact_prot_info(mtd, buf, 4096); ret = mtd_get_fact_prot_info(mtd, 4096, &retlen, buf); break; case MTD_FILE_MODE_OTP_USER: ret = mtd_get_user_prot_info(mtd, buf, 4096); ret = mtd_get_user_prot_info(mtd, 4096, &retlen, buf); break; default: ret = -EINVAL; break; } if (ret >= 0) { if (!ret) { if (cmd == OTPGETREGIONCOUNT) { int nbr = ret / sizeof(struct otp_info); int nbr = retlen / sizeof(struct otp_info); ret = copy_to_user(argp, &nbr, sizeof(int)); } else ret = copy_to_user(argp, buf, ret); ret = copy_to_user(argp, buf, retlen); if (ret) ret = -EFAULT; } Loading
drivers/mtd/mtdcore.c +6 −6 Original line number Diff line number Diff line Loading @@ -883,14 +883,14 @@ EXPORT_SYMBOL_GPL(mtd_read_oob); * devices. The user data is one time programmable but the factory data is read * only. */ int mtd_get_fact_prot_info(struct mtd_info *mtd, struct otp_info *buf, size_t len) int mtd_get_fact_prot_info(struct mtd_info *mtd, size_t len, size_t *retlen, struct otp_info *buf) { if (!mtd->_get_fact_prot_info) return -EOPNOTSUPP; if (!len) return 0; return mtd->_get_fact_prot_info(mtd, buf, len); return mtd->_get_fact_prot_info(mtd, len, retlen, buf); } EXPORT_SYMBOL_GPL(mtd_get_fact_prot_info); Loading @@ -906,14 +906,14 @@ int mtd_read_fact_prot_reg(struct mtd_info *mtd, loff_t from, size_t len, } EXPORT_SYMBOL_GPL(mtd_read_fact_prot_reg); int mtd_get_user_prot_info(struct mtd_info *mtd, struct otp_info *buf, size_t len) int mtd_get_user_prot_info(struct mtd_info *mtd, size_t len, size_t *retlen, struct otp_info *buf) { if (!mtd->_get_user_prot_info) return -EOPNOTSUPP; if (!len) return 0; return mtd->_get_user_prot_info(mtd, buf, len); return mtd->_get_user_prot_info(mtd, len, retlen, buf); } EXPORT_SYMBOL_GPL(mtd_get_user_prot_info); Loading
drivers/mtd/mtdpart.c +8 −6 Original line number Diff line number Diff line Loading @@ -150,11 +150,12 @@ static int part_read_user_prot_reg(struct mtd_info *mtd, loff_t from, retlen, buf); } static int part_get_user_prot_info(struct mtd_info *mtd, struct otp_info *buf, size_t len) static int part_get_user_prot_info(struct mtd_info *mtd, size_t len, size_t *retlen, struct otp_info *buf) { struct mtd_part *part = PART(mtd); return part->master->_get_user_prot_info(part->master, buf, len); return part->master->_get_user_prot_info(part->master, len, retlen, buf); } static int part_read_fact_prot_reg(struct mtd_info *mtd, loff_t from, Loading @@ -165,11 +166,12 @@ static int part_read_fact_prot_reg(struct mtd_info *mtd, loff_t from, retlen, buf); } static int part_get_fact_prot_info(struct mtd_info *mtd, struct otp_info *buf, size_t len) static int part_get_fact_prot_info(struct mtd_info *mtd, size_t len, size_t *retlen, struct otp_info *buf) { struct mtd_part *part = PART(mtd); return part->master->_get_fact_prot_info(part->master, buf, len); return part->master->_get_fact_prot_info(part->master, len, retlen, buf); } static int part_write(struct mtd_info *mtd, loff_t to, size_t len, Loading