[PATCH 07/21] UBI: Fastmap: Prevent PEB leak

Richard Weinberger richard at nod.at
Wed Jun 13 06:42:04 EDT 2012


Before writing the new fastmap we have to ensure that no
PEBs are in flight.

Signed-off-by: Richard Weinberger <richard at nod.at>
---
 drivers/mtd/ubi/fastmap.c |    8 ++++++++
 1 files changed, 8 insertions(+), 0 deletions(-)

diff --git a/drivers/mtd/ubi/fastmap.c b/drivers/mtd/ubi/fastmap.c
index c2a1c18..82a011d 100644
--- a/drivers/mtd/ubi/fastmap.c
+++ b/drivers/mtd/ubi/fastmap.c
@@ -1366,6 +1366,14 @@ int ubi_update_fastmap(struct ubi_device *ubi)
 		kfree(old_fm);
 	}
 
+	/* Ensure that the PEBs of the old fastmap got erased and added to the
+	 * free list before we write the fastmap. Otherwise fastmp does not
+	 * see these PEBs and we leak them.
+	 * FIXME: Rewrite ubi_wl_flush() such that we can flush only the
+	 * erase work instead of all work.
+	 */
+	ubi_wl_flush(ubi);
+
 	ret = ubi_write_fastmap(ubi, new_fm);
 out_unlock:
 	mutex_unlock(&ubi->fm_mutex);
-- 
1.7.6.5




More information about the linux-mtd mailing list