This patch fixes some incorrect returns using copy_to_user.
It is for 2.4.26 + the previous patch.
-- 
Debian GNU/Linux 3.0 is out! ( http://www.debian.org/ )
Email:  Herbert Xu ~{PmV>HI~} <[EMAIL PROTECTED]>
Home Page: http://gondor.apana.org.au/~herbert/
PGP Key: http://gondor.apana.org.au/~herbert/pubkey.txt
--- kernel-2.4/drivers/usb/hiddev.c.orig        2004-05-06 20:19:59.000000000 +1000
+++ kernel-2.4/drivers/usb/hiddev.c     2004-05-06 20:24:10.000000000 +1000
@@ -433,7 +433,9 @@
                dinfo.product = dev->descriptor.idProduct;
                dinfo.version = dev->descriptor.bcdDevice;
                dinfo.num_applications = hid->maxapplication;
-               return copy_to_user((void *) arg, &dinfo, sizeof(dinfo));
+               if (copy_to_user((void *) arg, &dinfo, sizeof(dinfo)))
+                       return -EFAULT;
+               return 0;
 
        case HIDIOCGFLAG:
                return put_user(list->flags, (int *) arg);
@@ -522,7 +524,9 @@
 
                rinfo.num_fields = report->maxfield;
 
-               return copy_to_user((void *) arg, &rinfo, sizeof(rinfo));
+               if (copy_to_user((void *) arg, &rinfo, sizeof(rinfo)))
+                       return -EFAULT;
+               return 0;
 
        case HIDIOCGFIELDINFO:
                if (copy_from_user(&finfo, (void *) arg, sizeof(finfo)))
@@ -552,7 +556,10 @@
                finfo.unit_exponent = field->unit_exponent;
                finfo.unit = field->unit;
 
-               return copy_to_user((void *) arg, &finfo, sizeof(finfo));
+               if (copy_to_user((void *) arg, &finfo, sizeof(finfo)))
+                       return -EFAULT;
+
+               return 0;
 
        case HIDIOCGUSAGE:
        case HIDIOCSUSAGE:
@@ -649,7 +656,9 @@
                cinfo.usage = hid->collection[cinfo.index].usage;
                cinfo.level = hid->collection[cinfo.index].level;
 
-               return copy_to_user((void *) arg, &cinfo, sizeof(cinfo));
+               if (copy_to_user((void *) arg, &cinfo, sizeof(cinfo)))
+                       return -EFAULT;
+               return 0;
 
        default:
 

Reply via email to