aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/mtd/mtdpart.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/mtd/mtdpart.c')
-rw-r--r--drivers/mtd/mtdpart.c29
1 files changed, 15 insertions, 14 deletions
diff --git a/drivers/mtd/mtdpart.c b/drivers/mtd/mtdpart.c
index 6d7639b98eab..f22aeccf01e7 100644
--- a/drivers/mtd/mtdpart.c
+++ b/drivers/mtd/mtdpart.c
@@ -78,16 +78,16 @@ static void part_unpoint (struct mtd_info *mtd, u_char *addr, loff_t from, size_
78 part->master->unpoint (part->master, addr, from + part->offset, len); 78 part->master->unpoint (part->master, addr, from + part->offset, len);
79} 79}
80 80
81static int part_read_oob (struct mtd_info *mtd, loff_t from, size_t len, 81static int part_read_oob(struct mtd_info *mtd, loff_t from,
82 size_t *retlen, u_char *buf) 82 struct mtd_oob_ops *ops)
83{ 83{
84 struct mtd_part *part = PART(mtd); 84 struct mtd_part *part = PART(mtd);
85
85 if (from >= mtd->size) 86 if (from >= mtd->size)
86 len = 0; 87 return -EINVAL;
87 else if (from + len > mtd->size) 88 if (from + ops->len > mtd->size)
88 len = mtd->size - from; 89 return -EINVAL;
89 return part->master->read_oob (part->master, from + part->offset, 90 return part->master->read_oob(part->master, from + part->offset, ops);
90 len, retlen, buf);
91} 91}
92 92
93static int part_read_user_prot_reg (struct mtd_info *mtd, loff_t from, size_t len, 93static int part_read_user_prot_reg (struct mtd_info *mtd, loff_t from, size_t len,
@@ -134,18 +134,19 @@ static int part_write (struct mtd_info *mtd, loff_t to, size_t len,
134 len, retlen, buf); 134 len, retlen, buf);
135} 135}
136 136
137static int part_write_oob (struct mtd_info *mtd, loff_t to, size_t len, 137static int part_write_oob(struct mtd_info *mtd, loff_t to,
138 size_t *retlen, const u_char *buf) 138 struct mtd_oob_ops *ops)
139{ 139{
140 struct mtd_part *part = PART(mtd); 140 struct mtd_part *part = PART(mtd);
141
141 if (!(mtd->flags & MTD_WRITEABLE)) 142 if (!(mtd->flags & MTD_WRITEABLE))
142 return -EROFS; 143 return -EROFS;
144
143 if (to >= mtd->size) 145 if (to >= mtd->size)
144 len = 0; 146 return -EINVAL;
145 else if (to + len > mtd->size) 147 if (to + ops->len > mtd->size)
146 len = mtd->size - to; 148 return -EINVAL;
147 return part->master->write_oob (part->master, to + part->offset, 149 return part->master->write_oob(part->master, to + part->offset, ops);
148 len, retlen, buf);
149} 150}
150 151
151static int part_write_user_prot_reg (struct mtd_info *mtd, loff_t from, size_t len, 152static int part_write_user_prot_reg (struct mtd_info *mtd, loff_t from, size_t len,