Re: [PATCH] usb: xhci: fix incorrect memset()

From: Mathias Nyman
Date: Tue Dec 12 2017 - 05:45:08 EST


On 11.12.2017 19:05, Arnd Bergmann wrote:
On Mon, Dec 11, 2017 at 6:01 PM, Greg Kroah-Hartman
<gregkh@xxxxxxxxxxxxxxxxxxx> wrote:
On Mon, Dec 11, 2017 at 02:59:13PM +0200, Mathias Nyman wrote:
On 11.12.2017 13:27, Arnd Bergmann wrote:
gcc-8 warnings about the new driver using a memset with a bogus length:

drivers/usb/host/xhci-dbgcap.c: In function 'xhci_dbc_eps_exit':
drivers/usb/host/xhci-dbgcap.c:369:2: error: 'memset' used with length equal to number of elements without multiplication by element size [-Werror=memset-elt-size]

It looks like the author meant to use sizeof() rather than ARRAY_SIZE()
here, so use that.

Fixes: dfba2174dc42 ("usb: xhci: Add DbC support in xHCI driver")
Signed-off-by: Arnd Bergmann <arnd@xxxxxxxx>
---

Another patch to fix the same thing was sent earlier as a follow up to the original series.
https://marc.info/?l=linux-usb&m=151298133524873&w=2

But your patch includes the Fixes line with the commit id, which is nice.

Both fix the problem, It doesn't matter for me which one gets applied

They fix it in different ways, which is correct?

Both are correct, 'sizeof(dbc->eps)' is the same as 'sizeof(struct
dbc_ep) * ARRAY_SIZE(dbc->eps)'.

And Arnd probably doesn't have the hardware to do so?

Right.


Just to test and confirm boyh work I added a couple printk messages after memset()
showing bytes zeroed and method used:

# echo enabled > dbc
# cat dbc
enabled
# [ 219.050277] xhci_hcd 0000:00:14.0: DbC connected
[ 219.307250] xhci_hcd 0000:00:14.0: DbC configured
[ 219.313601] xhci_hcd 0000:00:14.0: DbC now attached to /dev/ttyDBC0

# echo disabled > dbc
[ 255.745590] xhci_hcd 0000:00:14.0: set 80 bytes to zero sizeof(struct dbc_ep) * ARRAY_SIZE(dbc->eps)
[ 255.755970] xhci_hcd 0000:00:14.0: set 80 bytes to zero sizeof(dbc->eps)

-Mathias