diff options
Diffstat (limited to 'drivers/mtd/ubi/gluebi.c')
| -rw-r--r-- | drivers/mtd/ubi/gluebi.c | 11 |
1 files changed, 3 insertions, 8 deletions
diff --git a/drivers/mtd/ubi/gluebi.c b/drivers/mtd/ubi/gluebi.c index 6dd4f5e77f82..49cd55ade9c8 100644 --- a/drivers/mtd/ubi/gluebi.c +++ b/drivers/mtd/ubi/gluebi.c | |||
| @@ -28,7 +28,7 @@ | |||
| 28 | * eraseblock size is equivalent to the logical eraseblock size of the volume. | 28 | * eraseblock size is equivalent to the logical eraseblock size of the volume. |
| 29 | */ | 29 | */ |
| 30 | 30 | ||
| 31 | #include <asm/div64.h> | 31 | #include <linux/math64.h> |
| 32 | #include "ubi.h" | 32 | #include "ubi.h" |
| 33 | 33 | ||
| 34 | /** | 34 | /** |
| @@ -109,7 +109,6 @@ static int gluebi_read(struct mtd_info *mtd, loff_t from, size_t len, | |||
| 109 | int err = 0, lnum, offs, total_read; | 109 | int err = 0, lnum, offs, total_read; |
| 110 | struct ubi_volume *vol; | 110 | struct ubi_volume *vol; |
| 111 | struct ubi_device *ubi; | 111 | struct ubi_device *ubi; |
| 112 | uint64_t tmp = from; | ||
| 113 | 112 | ||
| 114 | dbg_gen("read %zd bytes from offset %lld", len, from); | 113 | dbg_gen("read %zd bytes from offset %lld", len, from); |
| 115 | 114 | ||
| @@ -119,9 +118,7 @@ static int gluebi_read(struct mtd_info *mtd, loff_t from, size_t len, | |||
| 119 | vol = container_of(mtd, struct ubi_volume, gluebi_mtd); | 118 | vol = container_of(mtd, struct ubi_volume, gluebi_mtd); |
| 120 | ubi = vol->ubi; | 119 | ubi = vol->ubi; |
| 121 | 120 | ||
| 122 | offs = do_div(tmp, mtd->erasesize); | 121 | lnum = div_u64_rem(from, mtd->erasesize, &offs); |
| 123 | lnum = tmp; | ||
| 124 | |||
| 125 | total_read = len; | 122 | total_read = len; |
| 126 | while (total_read) { | 123 | while (total_read) { |
| 127 | size_t to_read = mtd->erasesize - offs; | 124 | size_t to_read = mtd->erasesize - offs; |
| @@ -160,7 +157,6 @@ static int gluebi_write(struct mtd_info *mtd, loff_t to, size_t len, | |||
| 160 | int err = 0, lnum, offs, total_written; | 157 | int err = 0, lnum, offs, total_written; |
| 161 | struct ubi_volume *vol; | 158 | struct ubi_volume *vol; |
| 162 | struct ubi_device *ubi; | 159 | struct ubi_device *ubi; |
| 163 | uint64_t tmp = to; | ||
| 164 | 160 | ||
| 165 | dbg_gen("write %zd bytes to offset %lld", len, to); | 161 | dbg_gen("write %zd bytes to offset %lld", len, to); |
| 166 | 162 | ||
| @@ -173,8 +169,7 @@ static int gluebi_write(struct mtd_info *mtd, loff_t to, size_t len, | |||
| 173 | if (ubi->ro_mode) | 169 | if (ubi->ro_mode) |
| 174 | return -EROFS; | 170 | return -EROFS; |
| 175 | 171 | ||
| 176 | offs = do_div(tmp, mtd->erasesize); | 172 | lnum = div_u64_rem(to, mtd->erasesize, &offs); |
| 177 | lnum = tmp; | ||
| 178 | 173 | ||
| 179 | if (len % mtd->writesize || offs % mtd->writesize) | 174 | if (len % mtd->writesize || offs % mtd->writesize) |
| 180 | return -EINVAL; | 175 | return -EINVAL; |
