[PATCH v4 1/3] mtd: mtdpart: Make ECC stat handling consistent
Boris Brezillon
boris.brezillon at free-electrons.com
Wed Jan 10 13:07:18 PST 2018
On Wed, 10 Jan 2018 21:27:34 +0100
Robert Jarzmik <robert.jarzmik at free.fr> wrote:
> Boris Brezillon <boris.brezillon at free-electrons.com> writes:
>
> > part_read() and part_read_oob() where counting ECC failures and
> Typo: s/where/were.
I'll fix the typo.
>
> > diff --git a/drivers/mtd/mtdpart.c b/drivers/mtd/mtdpart.c
> > index be088bccd593..283e8526713b 100644
> > --- a/drivers/mtd/mtdpart.c
> > +++ b/drivers/mtd/mtdpart.c
> > @@ -105,6 +105,7 @@ static int part_read_oob(struct mtd_info *mtd, loff_t from,
> > struct mtd_oob_ops *ops)
> > {
> > struct mtd_part *part = mtd_to_part(mtd);
> > + struct mtd_ecc_stats stats;
> > int res;
> >
> > if (from >= mtd->size)
> > @@ -127,12 +128,12 @@ static int part_read_oob(struct mtd_info *mtd, loff_t from,
> > }
> >
> > res = part->parent->_read_oob(part->parent, from + part->offset, ops);
> > - if (unlikely(res)) {
> > - if (mtd_is_bitflip(res))
> > - mtd->ecc_stats.corrected++;
> > - if (mtd_is_eccerr(res))
> > - mtd->ecc_stats.failed++;
> > - }
> > + if (unlikely(mtd_is_eccerr(res)))
> > + mtd->ecc_stats.failed +=
> > + part->parent->ecc_stats.failed - stats.failed;
> stats is used uninitialized, but I suppose you've already caught that.
Yep, already fixed in v5.
Thanks,
Boris
More information about the linux-mtd
mailing list