diff options
| -rw-r--r-- | drivers/mtd/ubi/upd.c | 20 |
1 files changed, 11 insertions, 9 deletions
diff --git a/drivers/mtd/ubi/upd.c b/drivers/mtd/ubi/upd.c index 74fdc40c8627..c1d7b880c795 100644 --- a/drivers/mtd/ubi/upd.c +++ b/drivers/mtd/ubi/upd.c | |||
| @@ -147,12 +147,14 @@ int ubi_start_update(struct ubi_device *ubi, struct ubi_volume *vol, | |||
| 147 | } | 147 | } |
| 148 | 148 | ||
| 149 | if (bytes == 0) { | 149 | if (bytes == 0) { |
| 150 | err = ubi_wl_flush(ubi); | ||
| 151 | if (err) | ||
| 152 | return err; | ||
| 153 | |||
| 150 | err = clear_update_marker(ubi, vol, 0); | 154 | err = clear_update_marker(ubi, vol, 0); |
| 151 | if (err) | 155 | if (err) |
| 152 | return err; | 156 | return err; |
| 153 | err = ubi_wl_flush(ubi); | 157 | vol->updating = 0; |
| 154 | if (!err) | ||
| 155 | vol->updating = 0; | ||
| 156 | } | 158 | } |
| 157 | 159 | ||
| 158 | vol->upd_buf = vmalloc(ubi->leb_size); | 160 | vol->upd_buf = vmalloc(ubi->leb_size); |
| @@ -362,16 +364,16 @@ int ubi_more_update_data(struct ubi_device *ubi, struct ubi_volume *vol, | |||
| 362 | 364 | ||
| 363 | ubi_assert(vol->upd_received <= vol->upd_bytes); | 365 | ubi_assert(vol->upd_received <= vol->upd_bytes); |
| 364 | if (vol->upd_received == vol->upd_bytes) { | 366 | if (vol->upd_received == vol->upd_bytes) { |
| 367 | err = ubi_wl_flush(ubi); | ||
| 368 | if (err) | ||
| 369 | return err; | ||
| 365 | /* The update is finished, clear the update marker */ | 370 | /* The update is finished, clear the update marker */ |
| 366 | err = clear_update_marker(ubi, vol, vol->upd_bytes); | 371 | err = clear_update_marker(ubi, vol, vol->upd_bytes); |
| 367 | if (err) | 372 | if (err) |
| 368 | return err; | 373 | return err; |
| 369 | err = ubi_wl_flush(ubi); | 374 | vol->updating = 0; |
| 370 | if (err == 0) { | 375 | err = to_write; |
| 371 | vol->updating = 0; | 376 | vfree(vol->upd_buf); |
| 372 | err = to_write; | ||
| 373 | vfree(vol->upd_buf); | ||
| 374 | } | ||
| 375 | } | 377 | } |
| 376 | 378 | ||
| 377 | return err; | 379 | return err; |
