From: David Laight <David.Laight@ACULAB.COM>
To: "'Gustavo A. R. Silva'" <gustavo@embeddedor.com>,
Valentina Manea <valentina.manea.m@gmail.com>,
Shuah Khan <shuah@kernel.org>,
"Greg Kroah-Hartman" <gregkh@linuxfoundation.org>
Cc: "linux-usb@vger.kernel.org" <linux-usb@vger.kernel.org>,
"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
Kees Cook <keescook@chromium.org>
Subject: RE: [PATCH] usbip: vhci_hcd: Mark expected switch fall-through
Date: Mon, 29 Apr 2019 15:34:55 +0000 [thread overview]
Message-ID: <c3b730fde3ab44d1b339187518077bcf@AcuMS.aculab.com> (raw)
In-Reply-To: <287c8504-eafa-ebbb-aa39-babb86fdeb94@embeddedor.com>
From: Gustavo A. R. Silva
> Sent: 29 April 2019 16:06
> On 4/29/19 9:44 AM, David Laight wrote:
> > From: Gustavo A. R. Silva
> >> Sent: 29 April 2019 15:40
> >> In preparation to enabling -Wimplicit-fallthrough, mark switch
> >> cases where we are expecting to fall through.
> > ...
> >> diff --git a/drivers/usb/usbip/vhci_hcd.c b/drivers/usb/usbip/vhci_hcd.c
> >> index 667d9c0ec905..000ab7225717 100644
> >> --- a/drivers/usb/usbip/vhci_hcd.c
> >> +++ b/drivers/usb/usbip/vhci_hcd.c
> >> @@ -508,6 +508,7 @@ static int vhci_hub_control(struct usb_hcd *hcd, u16 typeReq, u16 wValue,
> >> case USB_PORT_FEAT_U1_TIMEOUT:
> >> usbip_dbg_vhci_rh(
> >> " SetPortFeature: USB_PORT_FEAT_U1_TIMEOUT\n");
> >> + /* Fall through */
> >> case USB_PORT_FEAT_U2_TIMEOUT:
> >> usbip_dbg_vhci_rh(
> >> " SetPortFeature: USB_PORT_FEAT_U2_TIMEOUT\n");
> >
> > That doesn't look right, both debug messages seem to get printed.
> >
>
> At first sight, I thought the same way, then I took a look into
> commit:
>
> 1c9de5bf428612458427943b724bea51abde520a
>
> and noticed that the original developer properly added fall-through
> comments in other places in the same switch() code, that gave me the
> impression he knew what he was doing; then I noticed the following
> error message in case USB_PORT_FEAT_U2_TIMEOUT:
>
> if (hcd->speed != HCD_USB3) {
> pr_err("USB_PORT_FEAT_U1/2_TIMEOUT req not "
> "supported for USB 2.0 roothub\n");
> goto error;
> }
>
> this error message is what makes me think the fall-through is
> intentional; otherwise I think it would look like this instead:
>
> if (hcd->speed != HCD_USB3) {
> pr_err("USB_PORT_FEAT_U2_TIMEOUT req not "
> "supported for USB 2.0 roothub\n");
> goto error;
> }
God, that code is truly ugly :-(
It starts off bad with all those 'u16' parameters - they'll require a
mask operation somewhere.
Then we have the classic:
wIndex = ((__u8)(wIndex & 0xff));
Some compilers have been known to and with 0xff twice for code like that.
Since the target is u16 there could be a 3rd mask with 0xffff on non-x86.
I like to put a blank line before 'case' lines - the only ones in that
function are in the middle of nested case blocks!
If you have to rely on the usbip_dbg_vhci_rh() debug lines you'll
wish they contained more context!
vhci_hub_control() has one early on; the rest could be killed -
they contain no more information.
David
-
Registered Address Lakeside, Bramley Road, Mount Farm, Milton Keynes, MK1 1PT, UK
Registration No: 1397386 (Wales)
next prev parent reply other threads:[~2019-04-29 15:35 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-04-29 14:39 Gustavo A. R. Silva
2019-04-29 14:44 ` David Laight
2019-04-29 15:05 ` Gustavo A. R. Silva
2019-04-29 15:34 ` David Laight [this message]
2019-04-30 15:44 ` Greg Kroah-Hartman
2019-04-30 15:49 ` shuah
2019-04-30 17:38 ` 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=c3b730fde3ab44d1b339187518077bcf@AcuMS.aculab.com \
--to=david.laight@aculab.com \
--cc=gregkh@linuxfoundation.org \
--cc=gustavo@embeddedor.com \
--cc=keescook@chromium.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-usb@vger.kernel.org \
--cc=shuah@kernel.org \
--cc=valentina.manea.m@gmail.com \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®