Merge tag 'upstream-3.12-rc1' of git://git.infradead.org/linux-ubi
Pull UBI fixes from Artem Bityutskiy: "Just a single fastmap fix plus a regression fix" * tag 'upstream-3.12-rc1' of git://git.infradead.org/linux-ubi: UBI: Fix invalidate_fastmap() UBI: Fix PEB leak in wear_leveling_worker()
This commit is contained in:
@@ -1343,7 +1343,7 @@ out:
|
|||||||
static int invalidate_fastmap(struct ubi_device *ubi,
|
static int invalidate_fastmap(struct ubi_device *ubi,
|
||||||
struct ubi_fastmap_layout *fm)
|
struct ubi_fastmap_layout *fm)
|
||||||
{
|
{
|
||||||
int ret, i;
|
int ret;
|
||||||
struct ubi_vid_hdr *vh;
|
struct ubi_vid_hdr *vh;
|
||||||
|
|
||||||
ret = erase_block(ubi, fm->e[0]->pnum);
|
ret = erase_block(ubi, fm->e[0]->pnum);
|
||||||
@@ -1360,9 +1360,6 @@ static int invalidate_fastmap(struct ubi_device *ubi,
|
|||||||
vh->sqnum = cpu_to_be64(ubi_next_sqnum(ubi));
|
vh->sqnum = cpu_to_be64(ubi_next_sqnum(ubi));
|
||||||
ret = ubi_io_write_vid_hdr(ubi, fm->e[0]->pnum, vh);
|
ret = ubi_io_write_vid_hdr(ubi, fm->e[0]->pnum, vh);
|
||||||
|
|
||||||
for (i = 0; i < fm->used_blocks; i++)
|
|
||||||
ubi_wl_put_fm_peb(ubi, fm->e[i], i, fm->to_be_tortured[i]);
|
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -1069,6 +1069,9 @@ static int wear_leveling_worker(struct ubi_device *ubi, struct ubi_work *wrk,
|
|||||||
if (!(e2->ec - e1->ec >= UBI_WL_THRESHOLD)) {
|
if (!(e2->ec - e1->ec >= UBI_WL_THRESHOLD)) {
|
||||||
dbg_wl("no WL needed: min used EC %d, max free EC %d",
|
dbg_wl("no WL needed: min used EC %d, max free EC %d",
|
||||||
e1->ec, e2->ec);
|
e1->ec, e2->ec);
|
||||||
|
|
||||||
|
/* Give the unused PEB back */
|
||||||
|
wl_tree_add(e2, &ubi->free);
|
||||||
goto out_cancel;
|
goto out_cancel;
|
||||||
}
|
}
|
||||||
self_check_in_wl_tree(ubi, e1, &ubi->used);
|
self_check_in_wl_tree(ubi, e1, &ubi->used);
|
||||||
|
Reference in New Issue
Block a user