Hello Philip Oberfichtner,

Commit 2fc8638403c7 ("usb: Assimilate usb_get_descriptor() to linux")
from Jun 4, 2024, leads to the following Smatch static checker
warning:

        common/usb.c:261 usb_control_msg()
        warn: should this be 'timeout == -1'

common/usb.c
    220 int usb_control_msg(struct usb_device *dev, unsigned int pipe,
221 unsigned char request, unsigned char requesttype,
    222                         unsigned short value, unsigned short index,
223 void *data, unsigned short size, int timeout)
    224 {
225 ALLOC_CACHE_ALIGN_BUFFER(struct devrequest, setup_packet, 1);
    226         int err;
    227
    228         if ((timeout == 0) && (!asynch_allowed)) {
229 /* request for a asynch control pipe is not allowed */
    230                 return -EINVAL;
    231         }
    232
    233         /* set setup command */
    234         setup_packet->requesttype = requesttype;
    235         setup_packet->request = request;
    236         setup_packet->value = cpu_to_le16(value);
    237         setup_packet->index = cpu_to_le16(index);
    238         setup_packet->length = cpu_to_le16(size);
239 debug("usb_control_msg: request: 0x%X, requesttype: 0x%X, " \
    240               "value 0x%X index 0x%X length 0x%X\n",
    241               request, requesttype, value, index, size);
    242         dev->status = USB_ST_NOT_PROC; /*not yet processed */
    243
244 err = submit_control_msg(dev, pipe, data, size, setup_packet);
    245         if (err < 0)
    246                 return err;
    247         if (timeout == 0)
    248                 return (int)size;
    249
    250         /*
251 * Wait for status to update until timeout expires, USB driver 252 * interrupt handler may set the status when the USB operation has
    253          * been completed.
    254          */
    255         while (timeout--) {
256 if (!((volatile unsigned long)dev->status & USB_ST_NOT_PROC))
    257                         break;
    258                 mdelay(1);
    259         }
    260
--> 261         if (timeout == 0)
    262                 return -ETIMEDOUT;
    263
    264         if (dev->status)
    265                 return -1;
    266
    267         return dev->act_len;
    268 }

Regards,
Andrew Goodbody

Reply via email to