patch-2.4.0-test8 linux/drivers/usb/devio.c
Next file: linux/drivers/usb/dsbr100.c
Previous file: linux/drivers/usb/dabusb.c
Back to the patch index
Back to the overall index
- Lines: 224
- Date:
Tue Aug 29 14:09:15 2000
- Orig file:
v2.4.0-test7/linux/drivers/usb/devio.c
- Orig date:
Wed Aug 23 18:36:38 2000
diff -u --recursive --new-file v2.4.0-test7/linux/drivers/usb/devio.c linux/drivers/usb/devio.c
@@ -607,7 +607,8 @@
unsigned char *tbuf;
int i, ret;
- copy_from_user_ret(&ctrl, (void *)arg, sizeof(ctrl), -EFAULT);
+ if (copy_from_user(&ctrl, (void *)arg, sizeof(ctrl)))
+ return -EFAULT;
switch (ctrl.requesttype & 0x1f) {
case USB_RECIP_ENDPOINT:
if ((ret = findintfep(ps->dev, ctrl.index & 0xff)) < 0)
@@ -636,11 +637,13 @@
i = my_usb_control_msg(dev, usb_rcvctrlpipe(dev, 0), ctrl.request, ctrl.requesttype,
ctrl.value, ctrl.index, tbuf, ctrl.length, tmo);
if ((i > 0) && ctrl.length) {
- copy_to_user_ret(ctrl.data, tbuf, ctrl.length, -EFAULT);
+ if (copy_to_user(ctrl.data, tbuf, ctrl.length))
+ return -EFAULT;
}
} else {
if (ctrl.length) {
- copy_from_user_ret(tbuf, ctrl.data, ctrl.length, -EFAULT);
+ if (copy_from_user(tbuf, ctrl.data, ctrl.length))
+ return -EFAULT;
}
i = my_usb_control_msg(dev, usb_sndctrlpipe(dev, 0), ctrl.request, ctrl.requesttype,
ctrl.value, ctrl.index, tbuf, ctrl.length, tmo);
@@ -662,7 +665,8 @@
unsigned char *tbuf;
int i, ret;
- copy_from_user_ret(&bulk, (void *)arg, sizeof(bulk), -EFAULT);
+ if (copy_from_user(&bulk, (void *)arg, sizeof(bulk)))
+ return -EFAULT;
if ((ret = findintfep(ps->dev, bulk.ep)) < 0)
return ret;
if ((ret = checkintf(ps, ret)))
@@ -686,11 +690,13 @@
}
i = my_usb_bulk_msg(dev, pipe, tbuf, len1, &len2, tmo);
if (!i && len2) {
- copy_to_user_ret(bulk.data, tbuf, len2, -EFAULT);
+ if (copy_to_user(bulk.data, tbuf, len2))
+ return -EFAULT;
}
} else {
if (len1) {
- copy_from_user_ret(tbuf, bulk.data, len1, -EFAULT);
+ if (copy_from_user(tbuf, bulk.data, len1))
+ return -EFAULT;
}
i = my_usb_bulk_msg(dev, pipe, tbuf, len1, &len2, tmo);
}
@@ -708,7 +714,8 @@
unsigned int ep;
int ret;
- get_user_ret(ep, (unsigned int *)arg, -EFAULT);
+ if (get_user(ep, (unsigned int *)arg))
+ return -EFAULT;
if ((ret = findintfep(ps->dev, ep)) < 0)
return ret;
if ((ret = checkintf(ps, ret)))
@@ -723,7 +730,8 @@
int pipe;
int ret;
- get_user_ret(ep, (unsigned int *)arg, -EFAULT);
+ if (get_user(ep, (unsigned int *)arg))
+ return -EFAULT;
if ((ret = findintfep(ps->dev, ep)) < 0)
return ret;
if ((ret = checkintf(ps, ret)))
@@ -743,7 +751,8 @@
struct usb_interface *interface;
int ret;
- copy_from_user_ret(&gd, arg, sizeof(gd), -EFAULT);
+ if (copy_from_user(&gd, arg, sizeof(gd)))
+ return -EFAULT;
if ((ret = findintfif(ps->dev, gd.interface)) < 0)
return ret;
interface = usb_ifnum_to_if(ps->dev, gd.interface);
@@ -752,7 +761,8 @@
if (!interface->driver)
return -ENODATA;
strcpy(gd.driver, interface->driver->name);
- copy_to_user_ret(arg, &gd, sizeof(gd), -EFAULT);
+ if (copy_to_user(arg, &gd, sizeof(gd)))
+ return -EFAULT;
return 0;
}
@@ -762,7 +772,8 @@
ci.devnum = ps->dev->devnum;
ci.slow = ps->dev->slow;
- copy_to_user_ret(arg, &ci, sizeof(ci), -EFAULT);
+ if (copy_to_user(arg, &ci, sizeof(ci)))
+ return -EFAULT;
return 0;
}
@@ -798,7 +809,8 @@
struct usb_interface *interface;
int ret;
- copy_from_user_ret(&setintf, arg, sizeof(setintf), -EFAULT);
+ if (copy_from_user(&setintf, arg, sizeof(setintf)))
+ return -EFAULT;
if ((ret = findintfif(ps->dev, setintf.interface)) < 0)
return ret;
interface = usb_ifnum_to_if(ps->dev, setintf.interface);
@@ -817,7 +829,8 @@
{
unsigned int u;
- get_user_ret(u, (unsigned int *)arg, -EFAULT);
+ if (get_user(u, (unsigned int *)arg))
+ return -EFAULT;
if (usb_set_configuration(ps->dev, u) < 0)
return -EINVAL;
return 0;
@@ -831,7 +844,8 @@
unsigned int u, totlen, isofrmlen;
int ret;
- copy_from_user_ret(&uurb, arg, sizeof(uurb), -EFAULT);
+ if (copy_from_user(&uurb, arg, sizeof(uurb)))
+ return -EFAULT;
if (uurb.flags & ~(USBDEVFS_URB_ISO_ASAP|USBDEVFS_URB_DISABLE_SPD))
return -EINVAL;
if (!uurb.buffer)
@@ -948,18 +962,22 @@
if (as->userbuffer)
if (copy_to_user(as->userbuffer, as->urb.transfer_buffer, as->urb.transfer_buffer_length))
return -EFAULT;
- put_user_ret(as->urb.status, &((struct usbdevfs_urb *)as->userurb)->status, -EFAULT);
- put_user_ret(as->urb.actual_length, &((struct usbdevfs_urb *)as->userurb)->actual_length, -EFAULT);
- put_user_ret(as->urb.error_count, &((struct usbdevfs_urb *)as->userurb)->error_count, -EFAULT);
+ if (put_user(as->urb.status,
+ &((struct usbdevfs_urb *)as->userurb)->status) ||
+ __put_user(as->urb.actual_length,
+ &((struct usbdevfs_urb *)as->userurb)->actual_length) ||
+ __put_user(as->urb.error_count,
+ &((struct usbdevfs_urb *)as->userurb)->error_count))
+ return -EFAULT;
+
if (!(usb_pipeisoc(as->urb.pipe)))
return 0;
for (i = 0; i < as->urb.number_of_packets; i++) {
- put_user_ret(as->urb.iso_frame_desc[i].actual_length,
- &((struct usbdevfs_urb *)as->userurb)->iso_frame_desc[i].actual_length,
- -EFAULT);
- put_user_ret(as->urb.iso_frame_desc[i].status,
- &((struct usbdevfs_urb *)as->userurb)->iso_frame_desc[i].status,
- -EFAULT);
+ if (put_user(as->urb.iso_frame_desc[i].actual_length,
+ &((struct usbdevfs_urb *)as->userurb)->iso_frame_desc[i].actual_length) ||
+ __put_user(as->urb.iso_frame_desc[i].status,
+ &((struct usbdevfs_urb *)as->userurb)->iso_frame_desc[i].status))
+ return -EFAULT;
}
return 0;
}
@@ -990,7 +1008,8 @@
free_async(as);
if (ret)
return ret;
- put_user_ret(addr, (void **)arg, -EFAULT);
+ if (put_user(addr, (void **)arg))
+ return -EFAULT;
return 0;
}
if (signal_pending(current))
@@ -1011,7 +1030,8 @@
free_async(as);
if (ret)
return ret;
- put_user_ret(addr, (void **)arg, -EFAULT);
+ if (put_user(addr, (void **)arg))
+ return -EFAULT;
return 0;
}
@@ -1019,7 +1039,8 @@
{
struct usbdevfs_disconnectsignal ds;
- copy_from_user_ret(&ds, arg, sizeof(ds), -EFAULT);
+ if (copy_from_user(&ds, arg, sizeof(ds)))
+ return -EFAULT;
if (ds.signr != 0 && (ds.signr < SIGRTMIN || ds.signr > SIGRTMAX))
return -EINVAL;
ps->discsignr = ds.signr;
@@ -1032,7 +1053,8 @@
unsigned int intf;
int ret;
- get_user_ret(intf, (unsigned int *)arg, -EFAULT);
+ if (get_user(intf, (unsigned int *)arg))
+ return -EFAULT;
if ((ret = findintfif(ps->dev, intf)) < 0)
return ret;
return claimintf(ps, ret);
@@ -1043,7 +1065,8 @@
unsigned int intf;
int ret;
- get_user_ret(intf, (unsigned int *)arg, -EFAULT);
+ if (get_user(intf, (unsigned int *)arg))
+ return -EFAULT;
if ((ret = findintfif(ps->dev, intf)) < 0)
return ret;
return releaseintf(ps, intf);
@@ -1057,7 +1080,8 @@
int retval = 0;
/* get input parameters and alloc buffer */
- copy_from_user_ret (&ctrl, (void *) arg, sizeof (ctrl), -EFAULT);
+ if (copy_from_user(&ctrl, (void *) arg, sizeof (ctrl)))
+ return -EFAULT;
if ((size = _IOC_SIZE (ctrl.ioctl_code)) > 0) {
if ((buf = kmalloc (size, GFP_KERNEL)) == 0)
return -ENOMEM;
FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen (who was at: slshen@lbl.gov)