[PATCH] mtd: mtdchar: Exit write loop when hitting end of OTP memory
Christian Riesch
christian.riesch at omicron.at
Fri Apr 26 13:56:09 EDT 2013
If a write to one time programmable memory (OTP) hits the end
of this memory area, no more data can be written and count does not
decrease anymore. We are trapped in the loop forever.
Therefore drop the remaining data if retlen != len.
Signed-off-by: Christian Riesch <christian.riesch at omicron.at>
---
drivers/mtd/mtdchar.c | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/drivers/mtd/mtdchar.c b/drivers/mtd/mtdchar.c
index e0e59bf..70c18c2 100644
--- a/drivers/mtd/mtdchar.c
+++ b/drivers/mtd/mtdchar.c
@@ -321,6 +321,10 @@ static ssize_t mtdchar_write(struct file *file, const char __user *buf, size_t c
case MTD_FILE_MODE_OTP_USER:
ret = mtd_write_user_prot_reg(mtd, *ppos, len,
&retlen, kbuf);
+
+ /* if we hit the end of otp memory, drop the rest */
+ if (retlen != len)
+ count -= len - retlen;
break;
case MTD_FILE_MODE_RAW:
--
1.7.9.5
More information about the linux-mtd
mailing list