USB: usbfs: fix -ENOENT error code to be -ENODEV
[pandora-kernel.git] / drivers / usb / core / devio.c
index 38b8bce..4247ecc 100644 (file)
@@ -595,7 +595,7 @@ static int usbdev_open(struct inode *inode, struct file *file)
        if (!ps)
                goto out;
 
-       ret = -ENOENT;
+       ret = -ENODEV;
 
        /* usbdev device-node */
        if (imajor(inode) == USB_DEVICE_MAJOR)
@@ -1321,7 +1321,8 @@ static int get_urb32(struct usbdevfs_urb *kurb,
                     struct usbdevfs_urb32 __user *uurb)
 {
        __u32  uptr;
-       if (get_user(kurb->type, &uurb->type) ||
+       if (!access_ok(VERIFY_READ, uurb, sizeof(*uurb)) ||
+           __get_user(kurb->type, &uurb->type) ||
            __get_user(kurb->endpoint, &uurb->endpoint) ||
            __get_user(kurb->status, &uurb->status) ||
            __get_user(kurb->flags, &uurb->flags) ||
@@ -1536,8 +1537,9 @@ static int proc_ioctl_compat(struct dev_state *ps, compat_uptr_t arg)
        u32 udata;
 
        uioc = compat_ptr((long)arg);
-       if (get_user(ctrl.ifno, &uioc->ifno) ||
-           get_user(ctrl.ioctl_code, &uioc->ioctl_code) ||
+       if (!access_ok(VERIFY_READ, uioc, sizeof(*uioc)) ||
+           __get_user(ctrl.ifno, &uioc->ifno) ||
+           __get_user(ctrl.ioctl_code, &uioc->ioctl_code) ||
            __get_user(udata, &uioc->data))
                return -EFAULT;
        ctrl.data = compat_ptr(udata);