smatch stuff: Staging: usbip: checking after it's too late in vhci_hub_control()

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Smatch complains that we check the array offset, after we already use
it.

drivers/staging/usbip/vhci_hcd.c:442 vhci_hub_control(181) error:
	testing array offset 'rhport' after use.

drivers/staging/usbip/vhci_hcd.c
   280          if (wIndex > VHCI_NPORTS)
   281                  pr_err("invalid port number %d\n", wIndex);
   282          rhport = ((__u8)(wIndex & 0x00ff)) - 1;
                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
If wIndex is zero here then rhport is -1.

	[snip]
   301                          if (dum->port_status[rhport] & USB_PORT_STAT_SUSPEND) {
                                         ^^^^^^^^^^^^^^^^^^^
rhport used as index here and throughout.
	[snip]
   348                  if (wIndex > VHCI_NPORTS || wIndex < 1) {
                                                    ^^^^^^^^^^
If wIndex is zero then rhport is -1, so this check is too late.


   349                          pr_err("invalid port number %d\n", wIndex);
   350                          retval = -EPIPE;
   351                  }
	[snip]
   442                  if (rhport >= 0) {
                            ^^^^^^^^^^^
checked for being -1 here, but it's too late.

   443                          dump_port_status_diff(prev_port_status[rhport],
   444                                                dum->port_status[rhport]);

regards,
dan carpenter
_______________________________________________
devel mailing list
devel@xxxxxxxxxxxxxxxxxxxxxx
http://driverdev.linuxdriverproject.org/mailman/listinfo/devel


[Index of Archives]     [Linux Driver Backports]     [DMA Engine]     [Linux GPIO]     [Linux SPI]     [Video for Linux]     [Linux USB Devel]     [Linux Coverity]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [Yosemite Backpacking]
  Powered by Linux