|
@@ -1718,12 +1718,12 @@ int ubi_wl_flush(struct ubi_device *ubi, int vol_id, int lnum)
|
|
vol_id, lnum, ubi->works_count);
|
|
vol_id, lnum, ubi->works_count);
|
|
|
|
|
|
while (found) {
|
|
while (found) {
|
|
- struct ubi_work *wrk;
|
|
|
|
|
|
+ struct ubi_work *wrk, *tmp;
|
|
found = 0;
|
|
found = 0;
|
|
|
|
|
|
down_read(&ubi->work_sem);
|
|
down_read(&ubi->work_sem);
|
|
spin_lock(&ubi->wl_lock);
|
|
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) &&
|
|
if ((vol_id == UBI_ALL || wrk->vol_id == vol_id) &&
|
|
(lnum == UBI_ALL || wrk->lnum == lnum)) {
|
|
(lnum == UBI_ALL || wrk->lnum == lnum)) {
|
|
list_del(&wrk->list);
|
|
list_del(&wrk->list);
|