UBI: bugfix in ubi_wl_flush()
authorRichard Weinberger <richard@nod.at>
Sun, 27 Jul 2014 07:35:48 +0000 (09:35 +0200)
committerArtem Bityutskiy <artem.bityutskiy@linux.intel.com>
Mon, 28 Jul 2014 16:07:33 +0000 (19:07 +0300)
Use the _safe variant because we're iterating over a list where items get
deleted and freed.

Signed-off-by: Richard Weinberger <richard@nod.at>
Signed-off-by: Artem Bityutskiy <artem.bityutskiy@linux.intel.com>
drivers/mtd/ubi/wl.c

index 0f3425d..20f4917 100644 (file)
@@ -1718,12 +1718,12 @@ int ubi_wl_flush(struct ubi_device *ubi, int vol_id, int lnum)
               vol_id, lnum, ubi->works_count);
 
        while (found) {
-               struct ubi_work *wrk;
+               struct ubi_work *wrk, *tmp;
                found = 0;
 
                down_read(&ubi->work_sem);
                spin_lock(&ubi->wl_lock);
-               list_for_each_entry(wrk, &ubi->works, list) {
+               list_for_each_entry_safe(wrk, tmp, &ubi->works, list) {
                        if ((vol_id == UBI_ALL || wrk->vol_id == vol_id) &&
                            (lnum == UBI_ALL || wrk->lnum == lnum)) {
                                list_del(&wrk->list);