All of lore.kernel.org
 help / color / mirror / Atom feed
From: Johan Hovold <johan@kernel.org>
To: "Gustavo A. R. Silva" <gustavo@embeddedor.com>
Cc: Johan Hovold <johan@kernel.org>,
	Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
	linux-usb@vger.kernel.org, linux-kernel@vger.kernel.org,
	Kees Cook <keescook@chromium.org>
Subject: [v2] USB: serial: io_edgeport: mark expected switch fall-throughs
Date: Thu, 2 May 2019 15:56:36 +0200	[thread overview]
Message-ID: <20190502135636.GT26546@localhost> (raw)

On Thu, May 02, 2019 at 08:22:30AM -0500, Gustavo A. R. Silva wrote:
> 
> 
> On 5/2/19 5:26 AM, Johan Hovold wrote:
> > On Wed, May 01, 2019 at 04:33:29PM -0500, Gustavo A. R. Silva wrote:
> >> In preparation to enabling -Wimplicit-fallthrough, mark switch
> >> cases where we are expecting to fall through.
> >>
> >> This patch fixes the following warnings:
> >>
> >> drivers/usb/serial/io_edgeport.c: In function ‘process_rcvd_data’:
> >> drivers/usb/serial/io_edgeport.c:1750:7: warning: this statement may fall through [-Wimplicit-fallthrough=]
> >>     if (bufferLength == 0) {
> >>        ^
> >> drivers/usb/serial/io_edgeport.c:1755:3: note: here
> >>    case EXPECT_HDR2:
> >>    ^~~~
> >> drivers/usb/serial/io_edgeport.c:1810:8: warning: this statement may fall through [-Wimplicit-fallthrough=]
> >>      if (bufferLength == 0) {
> >>         ^
> >> drivers/usb/serial/io_edgeport.c:1816:3: note: here
> >>    case EXPECT_DATA: /* Expect data */
> >>    ^~~~
> >>
> >> Warning level 3 was used: -Wimplicit-fallthrough=3
> >>
> >> Notice that, in this particular case, the code comments are modified
> >> in accordance with what GCC is expecting to find.
> >>
> >> This patch is part of the ongoing efforts to enable
> >> -Wimplicit-fallthrough.
> >>
> >> Signed-off-by: Gustavo A. R. Silva <gustavo@embeddedor.com>
> >> ---
> >> Changes in v2:
> >>  - Warning level 3 is now used: -Wimplicit-fallthrough=3
> >>    instead of warning level 2.
> >>  - All warnings in the switch statement are addressed now.
> >>
> >> Notice that these are the last remaining fall-through warnings
> >> in the USB subsystem. :)
> > 
> >>  drivers/usb/serial/io_edgeport.c | 3 ++-
> >>  1 file changed, 2 insertions(+), 1 deletion(-)
> >>
> >> diff --git a/drivers/usb/serial/io_edgeport.c b/drivers/usb/serial/io_edgeport.c
> >> index 4ca31c0e4174..7ad10328f4e2 100644
> >> --- a/drivers/usb/serial/io_edgeport.c
> >> +++ b/drivers/usb/serial/io_edgeport.c
> >> @@ -1751,7 +1751,7 @@ static void process_rcvd_data(struct edgeport_serial *edge_serial,
> >>  				edge_serial->rxState = EXPECT_HDR2;
> >>  				break;
> >>  			}
> >> -			/* otherwise, drop on through */
> >> +			/* Fall through - otherwise, drop on through */
> >>  		case EXPECT_HDR2:
> >>  			edge_serial->rxHeader2 = *buffer;
> >>  			++buffer;
> >> @@ -1813,6 +1813,7 @@ static void process_rcvd_data(struct edgeport_serial *edge_serial,
> >>  				}
> >>  				/* Else, drop through */
> >>  			}
> >> +			/* Fall through */
> >>  		case EXPECT_DATA: /* Expect data */
> > 
> > Looks like you forgot to take the original review feedback you got into
> > account:
> > 
> > 	https://lkml.kernel.org/r/87k1zf4k24.fsf@miraculix.mork.no
> > 
> 
> Oh, the thing is that the fall-through comments have to be placed at
> the very bottom of the case. Also, based on that feedback, this time
> I left the "Else, drop through" comment in place, so people can be
> informed that such fall-through is conditional.
> 
> What do you think about this:
> 
> diff --git a/drivers/usb/serial/io_edgeport.c b/drivers/usb/serial/io_edgeport.c
> index 4ca31c0e4174..52f27fc82563 100644
> --- a/drivers/usb/serial/io_edgeport.c
> +++ b/drivers/usb/serial/io_edgeport.c
> @@ -1751,7 +1751,7 @@ static void process_rcvd_data(struct edgeport_serial *edge_serial,
>                                 edge_serial->rxState = EXPECT_HDR2;
>                                 break;
>                         }
> -                       /* otherwise, drop on through */
> +                       /* Fall through - otherwise, drop on through */
>                 case EXPECT_HDR2:
>                         edge_serial->rxHeader2 = *buffer;
>                         ++buffer;
> @@ -1813,6 +1813,11 @@ static void process_rcvd_data(struct edgeport_serial *edge_serial,
>                                 }
>                                 /* Else, drop through */
>                         }
> +                       /* Beware that, currently, there are at least three
> +                        * break statements in this case block, so the
> +                        * fall-through marked below is NOT unconditional.
> +                        */
> +                       /* Fall through */
>                 case EXPECT_DATA: /* Expect data */
>                         if (bufferLength < edge_serial->rxBytesRemaining) {
>                                 rxLen = bufferLength;

It's better than v2, but I thought you said you were gonna look into
restructuring the code to maintain (or even improve) readability?

Johan

WARNING: multiple messages have this Message-ID (diff)
From: Johan Hovold <johan@kernel.org>
To: "Gustavo A. R. Silva" <gustavo@embeddedor.com>
Cc: Johan Hovold <johan@kernel.org>,
	Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
	linux-usb@vger.kernel.org, linux-kernel@vger.kernel.org,
	Kees Cook <keescook@chromium.org>
Subject: Re: [PATCH v2] USB: serial: io_edgeport: mark expected switch fall-throughs
Date: Thu, 2 May 2019 15:56:36 +0200	[thread overview]
Message-ID: <20190502135636.GT26546@localhost> (raw)
Message-ID: <20190502135636.o9eqVM7IWcOIrKP7RHY_11oaflyVCCuhEYdvlLElemE@z> (raw)
In-Reply-To: <df1feb28-58d0-7ac8-644d-0b48e5078edf@embeddedor.com>

On Thu, May 02, 2019 at 08:22:30AM -0500, Gustavo A. R. Silva wrote:
> 
> 
> On 5/2/19 5:26 AM, Johan Hovold wrote:
> > On Wed, May 01, 2019 at 04:33:29PM -0500, Gustavo A. R. Silva wrote:
> >> In preparation to enabling -Wimplicit-fallthrough, mark switch
> >> cases where we are expecting to fall through.
> >>
> >> This patch fixes the following warnings:
> >>
> >> drivers/usb/serial/io_edgeport.c: In function ‘process_rcvd_data’:
> >> drivers/usb/serial/io_edgeport.c:1750:7: warning: this statement may fall through [-Wimplicit-fallthrough=]
> >>     if (bufferLength == 0) {
> >>        ^
> >> drivers/usb/serial/io_edgeport.c:1755:3: note: here
> >>    case EXPECT_HDR2:
> >>    ^~~~
> >> drivers/usb/serial/io_edgeport.c:1810:8: warning: this statement may fall through [-Wimplicit-fallthrough=]
> >>      if (bufferLength == 0) {
> >>         ^
> >> drivers/usb/serial/io_edgeport.c:1816:3: note: here
> >>    case EXPECT_DATA: /* Expect data */
> >>    ^~~~
> >>
> >> Warning level 3 was used: -Wimplicit-fallthrough=3
> >>
> >> Notice that, in this particular case, the code comments are modified
> >> in accordance with what GCC is expecting to find.
> >>
> >> This patch is part of the ongoing efforts to enable
> >> -Wimplicit-fallthrough.
> >>
> >> Signed-off-by: Gustavo A. R. Silva <gustavo@embeddedor.com>
> >> ---
> >> Changes in v2:
> >>  - Warning level 3 is now used: -Wimplicit-fallthrough=3
> >>    instead of warning level 2.
> >>  - All warnings in the switch statement are addressed now.
> >>
> >> Notice that these are the last remaining fall-through warnings
> >> in the USB subsystem. :)
> > 
> >>  drivers/usb/serial/io_edgeport.c | 3 ++-
> >>  1 file changed, 2 insertions(+), 1 deletion(-)
> >>
> >> diff --git a/drivers/usb/serial/io_edgeport.c b/drivers/usb/serial/io_edgeport.c
> >> index 4ca31c0e4174..7ad10328f4e2 100644
> >> --- a/drivers/usb/serial/io_edgeport.c
> >> +++ b/drivers/usb/serial/io_edgeport.c
> >> @@ -1751,7 +1751,7 @@ static void process_rcvd_data(struct edgeport_serial *edge_serial,
> >>  				edge_serial->rxState = EXPECT_HDR2;
> >>  				break;
> >>  			}
> >> -			/* otherwise, drop on through */
> >> +			/* Fall through - otherwise, drop on through */
> >>  		case EXPECT_HDR2:
> >>  			edge_serial->rxHeader2 = *buffer;
> >>  			++buffer;
> >> @@ -1813,6 +1813,7 @@ static void process_rcvd_data(struct edgeport_serial *edge_serial,
> >>  				}
> >>  				/* Else, drop through */
> >>  			}
> >> +			/* Fall through */
> >>  		case EXPECT_DATA: /* Expect data */
> > 
> > Looks like you forgot to take the original review feedback you got into
> > account:
> > 
> > 	https://lkml.kernel.org/r/87k1zf4k24.fsf@miraculix.mork.no
> > 
> 
> Oh, the thing is that the fall-through comments have to be placed at
> the very bottom of the case. Also, based on that feedback, this time
> I left the "Else, drop through" comment in place, so people can be
> informed that such fall-through is conditional.
> 
> What do you think about this:
> 
> diff --git a/drivers/usb/serial/io_edgeport.c b/drivers/usb/serial/io_edgeport.c
> index 4ca31c0e4174..52f27fc82563 100644
> --- a/drivers/usb/serial/io_edgeport.c
> +++ b/drivers/usb/serial/io_edgeport.c
> @@ -1751,7 +1751,7 @@ static void process_rcvd_data(struct edgeport_serial *edge_serial,
>                                 edge_serial->rxState = EXPECT_HDR2;
>                                 break;
>                         }
> -                       /* otherwise, drop on through */
> +                       /* Fall through - otherwise, drop on through */
>                 case EXPECT_HDR2:
>                         edge_serial->rxHeader2 = *buffer;
>                         ++buffer;
> @@ -1813,6 +1813,11 @@ static void process_rcvd_data(struct edgeport_serial *edge_serial,
>                                 }
>                                 /* Else, drop through */
>                         }
> +                       /* Beware that, currently, there are at least three
> +                        * break statements in this case block, so the
> +                        * fall-through marked below is NOT unconditional.
> +                        */
> +                       /* Fall through */
>                 case EXPECT_DATA: /* Expect data */
>                         if (bufferLength < edge_serial->rxBytesRemaining) {
>                                 rxLen = bufferLength;

It's better than v2, but I thought you said you were gonna look into
restructuring the code to maintain (or even improve) readability?

Johan

             reply	other threads:[~2019-05-02 13:56 UTC|newest]

Thread overview: 22+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-05-02 13:56 Johan Hovold [this message]
2019-05-02 13:56 ` [PATCH v2] USB: serial: io_edgeport: mark expected switch fall-throughs Johan Hovold
  -- strict thread matches above, loose matches on Subject: below --
2019-05-02 15:14 [v2] " Johan Hovold
2019-05-02 15:14 ` [PATCH v2] " Johan Hovold
2019-05-02 15:04 [v2] " Greg Kroah-Hartman
2019-05-02 15:04 ` [PATCH v2] " Greg Kroah-Hartman
2019-05-02 14:57 [v2] " Gustavo A. R. Silva
2019-05-02 14:57 ` [PATCH v2] " Gustavo A. R. Silva
2019-05-02 14:48 [v2] " Johan Hovold
2019-05-02 14:48 ` [PATCH v2] " Johan Hovold
2019-05-02 14:47 [v2] " Greg Kroah-Hartman
2019-05-02 14:47 ` [PATCH v2] " Greg Kroah-Hartman
2019-05-02 14:40 [v2] " Greg Kroah-Hartman
2019-05-02 14:40 ` [PATCH v2] " Greg Kroah-Hartman
2019-05-02 14:28 [v2] " Gustavo A. R. Silva
2019-05-02 14:28 ` [PATCH v2] " Gustavo A. R. Silva
2019-05-02 13:22 [v2] " Gustavo A. R. Silva
2019-05-02 13:22 ` [PATCH v2] " Gustavo A. R. Silva
2019-05-02 10:26 [v2] " Johan Hovold
2019-05-02 10:26 ` [PATCH v2] " Johan Hovold
2019-05-01 21:33 [v2] " Gustavo A. R. Silva
2019-05-01 21:33 ` [PATCH v2] " Gustavo A. R. Silva

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20190502135636.GT26546@localhost \
    --to=johan@kernel.org \
    --cc=gregkh@linuxfoundation.org \
    --cc=gustavo@embeddedor.com \
    --cc=keescook@chromium.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-usb@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.