summaryrefslogtreecommitdiffstats
path: root/drivers/mtd/ubi/upd.c
diff options
context:
space:
mode:
authorH. Peter Anvin <hpa@zytor.com>2009-12-11 10:57:42 -0800
committerH. Peter Anvin <hpa@zytor.com>2009-12-11 10:57:42 -0800
commit5c6baba84e1ac6a79b266b40e17e692aab6604a1 (patch)
tree6ba34db1109107023d753dd9fd5c359b3b990a04 /drivers/mtd/ubi/upd.c
parent893f38d144a4d96d2483cd7c3801d26e1b2c23e9 (diff)
parent3ef884b4c04e857c283cc77ca70ad8f638d94b0e (diff)
downloadkernel-crypto-5c6baba84e1ac6a79b266b40e17e692aab6604a1.tar.gz
kernel-crypto-5c6baba84e1ac6a79b266b40e17e692aab6604a1.tar.xz
kernel-crypto-5c6baba84e1ac6a79b266b40e17e692aab6604a1.zip
Merge commit 'linus/master' into x86/urgent
Diffstat (limited to 'drivers/mtd/ubi/upd.c')
-rw-r--r--drivers/mtd/ubi/upd.c20
1 files changed, 11 insertions, 9 deletions
diff --git a/drivers/mtd/ubi/upd.c b/drivers/mtd/ubi/upd.c
index 74fdc40c862..c1d7b880c79 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,
}
if (bytes == 0) {
+ err = ubi_wl_flush(ubi);
+ if (err)
+ return err;
+
err = clear_update_marker(ubi, vol, 0);
if (err)
return err;
- err = ubi_wl_flush(ubi);
- if (!err)
- vol->updating = 0;
+ vol->updating = 0;
}
vol->upd_buf = vmalloc(ubi->leb_size);
@@ -362,16 +364,16 @@ int ubi_more_update_data(struct ubi_device *ubi, struct ubi_volume *vol,
ubi_assert(vol->upd_received <= vol->upd_bytes);
if (vol->upd_received == vol->upd_bytes) {
+ err = ubi_wl_flush(ubi);
+ if (err)
+ return err;
/* The update is finished, clear the update marker */
err = clear_update_marker(ubi, vol, vol->upd_bytes);
if (err)
return err;
- err = ubi_wl_flush(ubi);
- if (err == 0) {
- vol->updating = 0;
- err = to_write;
- vfree(vol->upd_buf);
- }
+ vol->updating = 0;
+ err = to_write;
+ vfree(vol->upd_buf);
}
return err;