Skip to content

Commit

Permalink
UBI: dont call ubi_self_check_all_ff() in __wl_get_peb()
Browse files Browse the repository at this point in the history
As ubi_self_check_all_ff() might sleep we are not allowed
to call it from atomic context.
For now we call it only from ubi_wl_get_peb().
There are some code paths where it would also make sense,
but these paths are currently atomic and only enabled
when fastmap is used.

Signed-off-by: Richard Weinberger <richard@nod.at>
Signed-off-by: Artem Bityutskiy <artem.bityutskiy@linux.intel.com>
  • Loading branch information
Richard Weinberger authored and Artem Bityutskiy committed Dec 4, 2012
1 parent ed4b702 commit 894aef2
Showing 1 changed file with 9 additions and 9 deletions.
18 changes: 9 additions & 9 deletions drivers/mtd/ubi/wl.c
Original file line number Diff line number Diff line change
Expand Up @@ -498,7 +498,7 @@ struct ubi_wl_entry *ubi_wl_get_fm_peb(struct ubi_device *ubi, int anchor)
* @ubi: UBI device description object
*
* This function returns a physical eraseblock in case of success and a
* negative error code in case of failure. Might sleep.
* negative error code in case of failure.
*/
static int __wl_get_peb(struct ubi_device *ubi)
{
Expand Down Expand Up @@ -540,13 +540,6 @@ static int __wl_get_peb(struct ubi_device *ubi)
* ubi_wl_get_peb() after removing e from the pool. */
prot_queue_add(ubi, e);
#endif
err = ubi_self_check_all_ff(ubi, e->pnum, ubi->vid_hdr_aloffset,
ubi->peb_size - ubi->vid_hdr_aloffset);
if (err) {
ubi_err("new PEB %d does not contain all 0xFF bytes", e->pnum);
return err;
}

return e->pnum;
}

Expand Down Expand Up @@ -690,12 +683,19 @@ static struct ubi_wl_entry *get_peb_for_wl(struct ubi_device *ubi)

int ubi_wl_get_peb(struct ubi_device *ubi)
{
int peb;
int peb, err;

spin_lock(&ubi->wl_lock);
peb = __wl_get_peb(ubi);
spin_unlock(&ubi->wl_lock);

err = ubi_self_check_all_ff(ubi, peb, ubi->vid_hdr_aloffset,
ubi->peb_size - ubi->vid_hdr_aloffset);
if (err) {
ubi_err("new PEB %d does not contain all 0xFF bytes", peb);
return err;
}

return peb;
}
#endif
Expand Down

0 comments on commit 894aef2

Please sign in to comment.