From: Al Viro This got caught by gcc on 64bit boxen - IMGSIZE is size_t and that means range not covered by that of signed 64bit, so we get an unsigned type for IMGSIZE-*ppos. On 32bit boxen IMGSIZE-*ppos ends up being loff_t, so the warning gets silenced. Signed-off-by: Andrew Morton --- 25-akpm/drivers/usb/misc/idmouse.c | 3 ++- 1 files changed, 2 insertions(+), 1 deletion(-) diff -puN drivers/usb/misc/idmouse.c~idmouse-min-fix drivers/usb/misc/idmouse.c --- 25/drivers/usb/misc/idmouse.c~idmouse-min-fix 2005-01-27 00:42:53.729345672 -0800 +++ 25-akpm/drivers/usb/misc/idmouse.c 2005-01-27 00:42:53.733345064 -0800 @@ -296,7 +296,8 @@ static ssize_t idmouse_read(struct file return 0; } - count = min ((loff_t)count, IMGSIZE - (*ppos)); + if (count > IMGSIZE - *ppos) + count = IMGSIZE - *ppos; if (copy_to_user (buffer, dev->bulk_in_buffer + *ppos, count)) { result = -EFAULT; _