diff options
author | Al Viro <viro@ftp.linux.org.uk> | 2005-10-29 06:56:13 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@g5.osdl.org> | 2005-10-29 13:35:08 -0400 |
commit | 018a2cdf1e633497bb4f01eb86a7cbffa611776d (patch) | |
tree | 515fd2723973f28a738c597d8630526b88650d40 | |
parent | 32b32c2c3566b206988fa30336ec6534759823b5 (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>
-rw-r--r-- | drivers/usb/misc/idmouse.c | 16 |
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; |