|
@@ -932,12 +932,22 @@ EXPORT_SYMBOL_GPL(mtd_read_user_prot_reg);
|
|
|
int mtd_write_user_prot_reg(struct mtd_info *mtd, loff_t to, size_t len,
|
|
|
size_t *retlen, u_char *buf)
|
|
|
{
|
|
|
+ int ret;
|
|
|
+
|
|
|
*retlen = 0;
|
|
|
if (!mtd->_write_user_prot_reg)
|
|
|
return -EOPNOTSUPP;
|
|
|
if (!len)
|
|
|
return 0;
|
|
|
- return mtd->_write_user_prot_reg(mtd, to, len, retlen, buf);
|
|
|
+ ret = mtd->_write_user_prot_reg(mtd, to, len, retlen, buf);
|
|
|
+ if (ret)
|
|
|
+ return ret;
|
|
|
+
|
|
|
+ /*
|
|
|
+ * If no data could be written at all, we are out of memory and
|
|
|
+ * must return -ENOSPC.
|
|
|
+ */
|
|
|
+ return (*retlen) ? 0 : -ENOSPC;
|
|
|
}
|
|
|
EXPORT_SYMBOL_GPL(mtd_write_user_prot_reg);
|
|
|
|