aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/usb/misc/idmouse.c
diff options
context:
space:
mode:
authorAl Viro <viro@ftp.linux.org.uk>2005-10-29 06:56:13 -0400
committerLinus Torvalds <torvalds@g5.osdl.org>2005-10-29 13:35:08 -0400
commit018a2cdf1e633497bb4f01eb86a7cbffa611776d (patch)
tree515fd2723973f28a738c597d8630526b88650d40 /drivers/usb/misc/idmouse.c
parent32b32c2c3566b206988fa30336ec6534759823b5 (diff)
[PATCH] idmouse cleanup and overflow fix
switched to simple_read_from_buffer(), killed broken use of min(). Incidentally, that use of min() had been fixed once, only to be reintroduced in commit 4244f72436ab77c3c29a6447af81734ab3925d85: [PATCH] USB: upgrade of the idmouse driver [snip] - if (count > IMGSIZE - *ppos) - count = IMGSIZE - *ppos; + count = min ((loff_t)count, IMGSIZE - (*ppos)); Note the lovely use of cast to shut the warning about misuse of min() up... Signed-off-by: Al Viro <viro@zeniv.linux.org.uk> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Diffstat (limited to 'drivers/usb/misc/idmouse.c')
-rw-r--r--drivers/usb/misc/idmouse.c16
1 files changed, 2 insertions, 14 deletions
diff --git a/drivers/usb/misc/idmouse.c b/drivers/usb/misc/idmouse.c
index 3944a55ed74c..1dc3e0f73014 100644
--- a/drivers/usb/misc/idmouse.c
+++ b/drivers/usb/misc/idmouse.c
@@ -319,20 +319,8 @@ static ssize_t idmouse_read(struct file *file, char __user *buffer, size_t count
319 return -ENODEV; 319 return -ENODEV;
320 } 320 }
321 321
322 if (*ppos >= IMGSIZE) { 322 result = simple_read_from_buffer(buffer, count, ppos,
323 up (&dev->sem); 323 dev->bulk_in_buffer, IMGSIZE);
324 return 0;
325 }
326
327 count = min ((loff_t)count, IMGSIZE - (*ppos));
328
329 if (copy_to_user (buffer, dev->bulk_in_buffer + *ppos, count)) {
330 result = -EFAULT;
331 } else {
332 result = count;
333 *ppos += count;
334 }
335
336 /* unlock the device */ 324 /* unlock the device */
337 up(&dev->sem); 325 up(&dev->sem);
338 return result; 326 return result;