Re: [PATCH 1/2] Input: usbtouchscreen - suppress empty array warnings

From: Johan Hovold
Date: Thu Jun 23 2022 - 01:53:22 EST


On Wed, Jun 22, 2022 at 04:22:08PM -0700, Dmitry Torokhov wrote:
> Hi Johan,
>
> On Mon, Jun 20, 2022 at 10:46:27AM +0200, Johan Hovold wrote:
> > When compile-testing the USB touchscreen driver without enabling any of
> > the device type options the usbtouch_dev_info array ends up being empty,
> > something which triggers compiler warning with -Warray-bounds
> > (gcc-11.3.0).
> >
> > drivers/input/touchscreen/usbtouchscreen.c: In function 'usbtouch_probe':
> > drivers/input/touchscreen/usbtouchscreen.c:1668:16:warning: array subscript <unknown> is outside array bounds of 'struct usbtouch_device_info[0]' [-Warray-bounds]
> > 1668 | type = &usbtouch_dev_info[id->driver_info];
> >
> > Suppress the warnings by making sure that the array is always non-empty.
>
> Does it still warn if you add a check for type, something like
>
> if (type >= ARRAY_SIZE(usbtouch_device_info))
> return -ENODEV;
>
> ?

It seems

if (id->driver_info >= ARRAY_SIZE(usbtouch_dev_info))
return -ENODEV;

indeed does the trick. I'll send a v2.

Johan