Re: [PATCH] mtd: cfi_util: mark expected switch fall-throughs

From: Miquel Raynal
Date: Thu May 09 2019 - 02:54:32 EST


Hi Gustavo,

"Gustavo A. R. Silva" <gustavo@xxxxxxxxxxxxxx> wrote on Tue, 7 May 2019
10:59:38 -0500:

> On 5/7/19 10:49 AM, Richard Weinberger wrote:
>
> >> Hi all,
> >>
> >> Thanks a lot for this, Richard:
> >>
> >> https://git.kernel.org/pub/scm/linux/kernel/git/mtd/linux.git/log/?h=mtd%2Fnext&qt=grep&q=fall-through
> >>
> >> There are only two of these warnings left to be addressed in
> >> MTD[1]:
> >>
> >> > @@ -3280,12 +3280,14 @@ static void onenand_check_features(struct mtd_info *mtd)
> >> > if ((this->version_id & 0xf) == 0xe)
> >> > this->options |= ONENAND_HAS_NOP_1;
> >> > }
> >> > + /* fall through */
> >> >
> >> > case ONENAND_DEVICE_DENSITY_2Gb:
> >> > /* 2Gb DDP does not have 2 plane */
> >> > if (!ONENAND_IS_DDP(this))
> >> > this->options |= ONENAND_HAS_2PLANE;
> >> > this->options |= ONENAND_HAS_UNLOCK_ALL;
> >> > + /* fall through */
> >>
> >> This looks strange.
> >>
> >> In ONENAND_DEVICE_DENSITY_2Gb:
> >> ONENAND_HAS_UNLOCK_ALL is set unconditionally.
> >>
> >> But then, under ONENAND_DEVICE_DENSITY_1Gb, the same option is set only
> >> if process is evaluated to true.
> >>
> >> Same problem with ONENAND_HAS_2PLANE:
> >> - it is set in ONENAND_DEVICE_DENSITY_4Gb only if ONENAND_IS_DDP()
> >> - it is unset in ONENAND_DEVICE_DENSITY_2Gb only if !ONENAND_IS_DDP()
> >>
> >> Maybe this portion should be reworked because I am unsure if this is a
> >> missing fall through or a bug.
> >>
> >>
> >> Thanks
> >> --
> >> Gustavo
> >>
> >> [1] https://lore.kernel.org/patchwork/patch/1036251/
> >
> > Did we miss this patch? AFAICT it is in -next too.
> >
>
> What is pending to be resolved are these warnings:
>
> drivers/mtd/nand/onenand/onenand_base.c: In function âonenand_check_featuresâ:
> drivers/mtd/nand/onenand/onenand_base.c:3264:6: warning: this statement may fall through [-Wimplicit-fallthrough=]
> if (ONENAND_IS_DDP(this))
> ^
> drivers/mtd/nand/onenand/onenand_base.c:3284:2: note: here
> case ONENAND_DEVICE_DENSITY_2Gb:
> ^~~~
> drivers/mtd/nand/onenand/onenand_base.c:3288:17: warning: this statement may fall through [-Wimplicit-fallthrough=]
> this->options |= ONENAND_HAS_UNLOCK_ALL;
> drivers/mtd/nand/onenand/onenand_base.c:3290:2: note: here
> case ONENAND_DEVICE_DENSITY_1Gb:
> ^~~~
>
> The final version of the patch in -next does not address them.
>

Send a commit for these two warnings stating very clearly close to
the top of the commit log that we don't know whether we need
fallthroughs or breaks there and that this is just a change to avoid
having new warnings when switching to -Wimplicit-fallthrough but this
change might be entirely wrong.


Thanks,
MiquÃl