Commit 78f220a8 authored by Linus Torvalds's avatar Linus Torvalds

Merge branch 'linux-next' of git://git.infradead.org/ubi-2.6

* 'linux-next' of git://git.infradead.org/ubi-2.6:
  UBI: do not oops when erroneous PEB is scheduled for scrubbing
  UBI: fix kconfig unmet dependency
  UBI: fix forward compatibility
  UBI: eliminate update of list_for_each_entry loop cursor
parents 4848d715 d3f6e6c6
...@@ -6,7 +6,7 @@ config MTD_UBI_DEBUG ...@@ -6,7 +6,7 @@ config MTD_UBI_DEBUG
depends on SYSFS depends on SYSFS
depends on MTD_UBI depends on MTD_UBI
select DEBUG_FS select DEBUG_FS
select KALLSYMS_ALL select KALLSYMS_ALL if KALLSYMS && DEBUG_KERNEL
help help
This option enables UBI debugging. This option enables UBI debugging.
......
...@@ -798,18 +798,18 @@ static int rename_volumes(struct ubi_device *ubi, ...@@ -798,18 +798,18 @@ static int rename_volumes(struct ubi_device *ubi,
goto out_free; goto out_free;
} }
re = kzalloc(sizeof(struct ubi_rename_entry), GFP_KERNEL); re1 = kzalloc(sizeof(struct ubi_rename_entry), GFP_KERNEL);
if (!re) { if (!re1) {
err = -ENOMEM; err = -ENOMEM;
ubi_close_volume(desc); ubi_close_volume(desc);
goto out_free; goto out_free;
} }
re->remove = 1; re1->remove = 1;
re->desc = desc; re1->desc = desc;
list_add(&re->list, &rename_list); list_add(&re1->list, &rename_list);
dbg_msg("will remove volume %d, name \"%s\"", dbg_msg("will remove volume %d, name \"%s\"",
re->desc->vol->vol_id, re->desc->vol->name); re1->desc->vol->vol_id, re1->desc->vol->name);
} }
mutex_lock(&ubi->device_mutex); mutex_lock(&ubi->device_mutex);
......
...@@ -843,7 +843,7 @@ static int process_eb(struct ubi_device *ubi, struct ubi_scan_info *si, ...@@ -843,7 +843,7 @@ static int process_eb(struct ubi_device *ubi, struct ubi_scan_info *si,
case UBI_COMPAT_DELETE: case UBI_COMPAT_DELETE:
ubi_msg("\"delete\" compatible internal volume %d:%d" ubi_msg("\"delete\" compatible internal volume %d:%d"
" found, will remove it", vol_id, lnum); " found, will remove it", vol_id, lnum);
err = add_to_list(si, pnum, ec, &si->corr); err = add_to_list(si, pnum, ec, &si->erase);
if (err) if (err)
return err; return err;
return 0; return 0;
......
...@@ -1212,7 +1212,8 @@ int ubi_wl_scrub_peb(struct ubi_device *ubi, int pnum) ...@@ -1212,7 +1212,8 @@ int ubi_wl_scrub_peb(struct ubi_device *ubi, int pnum)
retry: retry:
spin_lock(&ubi->wl_lock); spin_lock(&ubi->wl_lock);
e = ubi->lookuptbl[pnum]; e = ubi->lookuptbl[pnum];
if (e == ubi->move_from || in_wl_tree(e, &ubi->scrub)) { if (e == ubi->move_from || in_wl_tree(e, &ubi->scrub) ||
in_wl_tree(e, &ubi->erroneous)) {
spin_unlock(&ubi->wl_lock); spin_unlock(&ubi->wl_lock);
return 0; return 0;
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment