On Wed, 26 Feb 2003, Alan Stern wrote:

> As it turns out, this still generates a compiler warning.  There's a 
> mistake in the min() and max() macros in include/linux/kernel.h.  I will 
> post something about that on the linux kernel mailing list.

I spoke too soon (don't you just hate it when that happens?).  The macros 
are fine; it's a problem with type incompatibility in the driver.  Here is 
another patch (that goes on top of the first one) to fix the warning.

Alan Stern
--- usb-2.4/drivers/usb/usb-skeleton.c.2        Wed Feb 26 10:40:42 2003
+++ edited/drivers/usb/usb-skeleton.c   Wed Feb 26 10:43:42 2003
@@ -101,11 +101,11 @@
        char                    num_bulk_out;           /* number of bulk out 
endpoints we have */
 
        unsigned char *         bulk_in_buffer;         /* the buffer to receive data 
*/
-       int                     bulk_in_size;           /* the size of the receive 
buffer */
+       size_t                  bulk_in_size;           /* the size of the receive 
buffer */
        __u8                    bulk_in_endpointAddr;   /* the address of the bulk in 
endpoint */
 
        unsigned char *         bulk_out_buffer;        /* the buffer to send data */
-       int                     bulk_out_size;          /* the size of the send buffer 
*/
+       size_t                  bulk_out_size;          /* the size of the send buffer 
*/
        struct urb *            write_urb;              /* the urb used to send data */
        __u8                    bulk_out_endpointAddr;  /* the address of the bulk out 
endpoint */
        atomic_t                write_busy;             /* true iff write urb is busy 
*/
@@ -403,8 +403,7 @@
                wait_for_completion (&dev->write_finished);
 
        /* we can only write as much as our buffer will hold */
-       bytes_written = (count > dev->bulk_out_size) ? 
-                               dev->bulk_out_size : count;
+       bytes_written = min (dev->bulk_out_size, count);
 
        /* copy the data from userspace into our transfer buffer;
         * this is the only copy required.
@@ -509,7 +508,7 @@
        struct usb_host_interface *iface_desc;
        struct usb_endpoint_descriptor *endpoint;
        int minor;
-       int buffer_size;
+       size_t buffer_size;
        int i;
        int retval;
        char name[10];

Reply via email to