summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRichard Weinberger <richard@nod.at>2014-07-27 09:35:48 +0200
committerSascha Hauer <s.hauer@pengutronix.de>2014-09-11 15:53:29 +0200
commit20e2c9642bdffaf262a4e311d2fea34a4e64a00a (patch)
treee9d114f864338340ca2b2978c66731dc624435c2
parent315804827234d5f1b1ea3ce23bcd04b1ca36c072 (diff)
downloadbarebox-20e2c9642bdffaf262a4e311d2fea34a4e64a00a.tar.gz
barebox-20e2c9642bdffaf262a4e311d2fea34a4e64a00a.tar.xz
UBI: bugfix in ubi_wl_flush()
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>
-rw-r--r--drivers/mtd/ubi/wl.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/drivers/mtd/ubi/wl.c b/drivers/mtd/ubi/wl.c
index e52910f3c4..4c20e908ed 100644
--- a/drivers/mtd/ubi/wl.c
+++ b/drivers/mtd/ubi/wl.c
@@ -1617,10 +1617,10 @@ 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;
- 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);