Am Freitag, 6. Januar 2006 21:14 schrieb Pete Zaitcev:
> On Fri, 6 Jan 2006 20:32:31 +0100, Oliver Neukum <[EMAIL PROTECTED]> wrote:
> 
> > this is a small optimisation. It is ridiculous to do a kmalloc for
> > 18 bytes. This puts it onto the stack.
> 
> This seems fine for me, but remember that we have bigger descriptors
> too. This needs a comment, or janitors get confused.

Very well.

        Regards
                Oliver

Signed-off-by: Oliver Neukum <[EMAIL PROTECTED]>

--- a/drivers/usb/core/devio.c  2006-01-03 04:21:10.000000000 +0100
+++ b/drivers/usb/core/devio.c  2006-01-06 21:22:18.000000000 +0100
@@ -134,26 +134,21 @@
        }
 
        if (pos < sizeof(struct usb_device_descriptor)) {
-               struct usb_device_descriptor *desc = kmalloc(sizeof(*desc), 
GFP_KERNEL);
-               if (!desc) {
-                       ret = -ENOMEM;
-                       goto err;
-               }
-               memcpy(desc, &dev->descriptor, sizeof(dev->descriptor));
-               le16_to_cpus(&desc->bcdUSB);
-               le16_to_cpus(&desc->idVendor);
-               le16_to_cpus(&desc->idProduct);
-               le16_to_cpus(&desc->bcdDevice);
+               struct usb_device_descriptor temp_desc ; /* 18 bytes - fits on 
the stack */
+               
+               memcpy(&temp_desc, &dev->descriptor, sizeof(dev->descriptor));
+               le16_to_cpus(&temp_desc->bcdUSB);
+               le16_to_cpus(&temp_desc->idVendor);
+               le16_to_cpus(&temp_desc->idProduct);
+               le16_to_cpus(&temp_desc->bcdDevice);
 
                len = sizeof(struct usb_device_descriptor) - pos;
                if (len > nbytes)
                        len = nbytes;
-               if (copy_to_user(buf, ((char *)desc) + pos, len)) {
-                       kfree(desc);
+               if (copy_to_user(buf, ((char *)&temp_desc) + pos, len)) {
                        ret = -EFAULT;
                        goto err;
                }
-               kfree(desc);
 
                *ppos += len;
                buf += len;


-------------------------------------------------------
This SF.net email is sponsored by: Splunk Inc. Do you grep through log files
for problems?  Stop!  Download the new AJAX search engine that makes
searching your log files as easy as surfing the  web.  DOWNLOAD SPLUNK!
http://ads.osdn.com/?ad_id=7637&alloc_id=16865&op=click
_______________________________________________
[email protected]
To unsubscribe, use the last form field at:
https://lists.sourceforge.net/lists/listinfo/linux-usb-devel

Reply via email to