Re: [PATCH] usb: gadget: u_serial: fix coverity warning: negative index at array

From: Alan Stern
Date: Thu May 14 2020 - 10:22:40 EST


On Thu, May 14, 2020 at 04:05:00PM +0800, Macpaul Lin wrote:
> This issue has been reported by coverity scanner.
> Replace "int portnum" by "unsigned int", this void negative index at
> array.

Can you please explain this more fully? Why does coverity think the
code might use a negative array index? Is there some possibility that
the portnum value might actually be negative?

It's noticeable that your patch doesn't actually change any values, only
the type. This means that if the code was buggy before, it's still
buggy. Alternatively, if the code wasn't buggy before then coverity got
a false positive, so no change should be needed.

Alan Stern

> Signed-off-by: Stan Lu <stan.lu@xxxxxxxxxxxx>
> Signed-off-by: Macpaul Lin <macpaul.lin@xxxxxxxxxxxx>
> ---
> drivers/usb/gadget/function/u_serial.c | 4 ++--
> 1 file changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/usb/gadget/function/u_serial.c b/drivers/usb/gadget/function/u_serial.c
> index 8167d37..53951f2 100644
> --- a/drivers/usb/gadget/function/u_serial.c
> +++ b/drivers/usb/gadget/function/u_serial.c
> @@ -587,7 +587,7 @@ static int gs_start_io(struct gs_port *port)
> */
> static int gs_open(struct tty_struct *tty, struct file *file)
> {
> - int port_num = tty->index;
> + unsigned int port_num = tty->index;
> struct gs_port *port;
> int status = 0;
>
> @@ -1211,7 +1211,7 @@ int gserial_alloc_line_no_console(unsigned char *line_num)
> struct gs_port *port;
> struct device *tty_dev;
> int ret;
> - int port_num;
> + unsigned int port_num;
>
> coding.dwDTERate = cpu_to_le32(9600);
> coding.bCharFormat = 8;
> --
> 1.7.9.5