# This is a BitKeeper generated patch for the following project:
# Project Name: Linux kernel tree
# This patch format is intended for GNU patch command version 2.5 or higher.
# This patch includes the following deltas:
#                  ChangeSet    1.592   -> 1.593  
#       drivers/usb/core/devio.c        1.22    -> 1.23   
#
# The following is the BitKeeper ChangeSet Log
# --------------------------------------------
# 02/04/08      [EMAIL PROTECTED]   1.593
# [PATCH] page limit on bulk transfers in usbfs?
# 
# Here is an updated patch using kmalloc that removes the page limit
# on bulk transfers in usbfs.  I've tested it and it seems to work OK.
# --------------------------------------------
#
diff -Nru a/drivers/usb/core/devio.c b/drivers/usb/core/devio.c
--- a/drivers/usb/core/devio.c  Mon Apr  8 15:49:17 2002
+++ b/drivers/usb/core/devio.c  Mon Apr  8 15:49:17 2002
@@ -597,33 +597,31 @@
        if (!usb_maxpacket(dev, pipe, !(bulk.ep & USB_DIR_IN)))
                return -EINVAL;
        len1 = bulk.len;
-       if (len1 > PAGE_SIZE)
-               return -EINVAL;
-       if (!(tbuf = (unsigned char *)__get_free_page(GFP_KERNEL)))
+       if (!(tbuf = kmalloc(len1, GFP_KERNEL)))
                return -ENOMEM;
        tmo = (bulk.timeout * HZ + 999) / 1000;
        if (bulk.ep & 0x80) {
                if (len1 && !access_ok(VERIFY_WRITE, bulk.data, len1)) {
-                       free_page((unsigned long)tbuf);
+                       kfree(tbuf);
                        return -EINVAL;
                }
                i = usb_bulk_msg(dev, pipe, tbuf, len1, &len2, tmo);
                if (!i && len2) {
                        if (copy_to_user(bulk.data, tbuf, len2)) {
-                               free_page((unsigned long)tbuf);
+                               kfree(tbuf);
                                return -EFAULT;
                        }
                }
        } else {
                if (len1) {
                        if (copy_from_user(tbuf, bulk.data, len1)) {
-                               free_page((unsigned long)tbuf);
+                               kfree(tbuf);
                                return -EFAULT;
                        }
                }
                i = usb_bulk_msg(dev, pipe, tbuf, len1, &len2, tmo);
        }
-       free_page((unsigned long)tbuf);
+       kfree(tbuf);
        if (i < 0) {
                printk(KERN_WARNING "usbfs: USBDEVFS_BULK failed dev %d ep 0x%x len %u 
ret %d\n", 
                       dev->devnum, bulk.ep, bulk.len, i);

_______________________________________________
[EMAIL PROTECTED]
To unsubscribe, use the last form field at:
https://lists.sourceforge.net/lists/listinfo/linux-usb-devel

Sponsored by http://www.ThinkGeek.com/

Reply via email to