diff options
Diffstat (limited to 'drivers/mtd/mtdpart.c')
-rw-r--r-- | drivers/mtd/mtdpart.c | 29 |
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 | ||
81 | static int part_read_oob (struct mtd_info *mtd, loff_t from, size_t len, | 81 | static 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 | ||
93 | static int part_read_user_prot_reg (struct mtd_info *mtd, loff_t from, size_t len, | 93 | static 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 | ||
137 | static int part_write_oob (struct mtd_info *mtd, loff_t to, size_t len, | 137 | static 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 | ||
151 | static int part_write_user_prot_reg (struct mtd_info *mtd, loff_t from, size_t len, | 152 | static int part_write_user_prot_reg (struct mtd_info *mtd, loff_t from, size_t len, |