Message ID | 1472042175-8655-3-git-send-email-richard@nod.at |
---|---|
State | Accepted |
Headers | show |
On Wed, 24 Aug 2016 14:36:15 +0200 Richard Weinberger <richard@nod.at> wrote: > Usually Fastmap is free to consider every PEB in one of the pools > as newer than the existing PEB. Since PEBs in a pool are by definition > newer than everything else. > But update_vol() missed the case that a pool can contain more than > one candidate. Hm, it's not really that update_vol() was not taking this case into account (actually it is comparing 2 LEBs and picking the latest version), it's just that it's not updating ->sqnum as it should be. Or, am I missing something? > > Cc: <stable@vger.kernel.org> > Fixes: dbb7d2a88d ("UBI: Add fastmap core") > Signed-off-by: Richard Weinberger <richard@nod.at> Anyway, apart from the commit message, Reviewed-by: Boris Brezillon <boris.brezillon@free-electrons.com> > --- > drivers/mtd/ubi/fastmap.c | 1 + > 1 file changed, 1 insertion(+) > > diff --git a/drivers/mtd/ubi/fastmap.c b/drivers/mtd/ubi/fastmap.c > index da33100..ccb3ceb 100644 > --- a/drivers/mtd/ubi/fastmap.c > +++ b/drivers/mtd/ubi/fastmap.c > @@ -328,6 +328,7 @@ static int update_vol(struct ubi_device *ubi, struct ubi_attach_info *ai, > aeb->pnum = new_aeb->pnum; > aeb->copy_flag = new_vh->copy_flag; > aeb->scrub = new_aeb->scrub; > + aeb->sqnum = new_aeb->sqnum; > kmem_cache_free(ai->aeb_slab_cache, new_aeb); > > /* new_aeb is older */
diff --git a/drivers/mtd/ubi/fastmap.c b/drivers/mtd/ubi/fastmap.c index da33100..ccb3ceb 100644 --- a/drivers/mtd/ubi/fastmap.c +++ b/drivers/mtd/ubi/fastmap.c @@ -328,6 +328,7 @@ static int update_vol(struct ubi_device *ubi, struct ubi_attach_info *ai, aeb->pnum = new_aeb->pnum; aeb->copy_flag = new_vh->copy_flag; aeb->scrub = new_aeb->scrub; + aeb->sqnum = new_aeb->sqnum; kmem_cache_free(ai->aeb_slab_cache, new_aeb); /* new_aeb is older */
Usually Fastmap is free to consider every PEB in one of the pools as newer than the existing PEB. Since PEBs in a pool are by definition newer than everything else. But update_vol() missed the case that a pool can contain more than one candidate. Cc: <stable@vger.kernel.org> Fixes: dbb7d2a88d ("UBI: Add fastmap core") Signed-off-by: Richard Weinberger <richard@nod.at> --- drivers/mtd/ubi/fastmap.c | 1 + 1 file changed, 1 insertion(+)