if (*ppos >= IMGSIZE) { up (&dev->sem); return 0; }  count = min ((loff_t)count, IMGSIZE - (*ppos));  if (copy_to_user (buffer, dev->bulk_in_buffer + *ppos, count)) { result = -EFAULT; } else { result = count; *ppos += count; }  
result = simple_read_from_buffer(buffer, count, ppos, dev->bulk_in_buffer, IMGSIZE); 
static ssize_t idmouse_read(struct file *file, char __user *buffer, size_t count,				loff_t * ppos){	struct usb_idmouse *dev;	int result = 0;	dev = (struct usb_idmouse *) file->private_data;	/* lock this object */	down (&dev->sem);	/* verify that the device wasn't unplugged */	if (!dev->present) {		up (&dev->sem);		return -ENODEV;	}	if (*ppos >= IMGSIZE) {		up (&dev->sem);		return 0;	}	count = min ((loff_t)count, IMGSIZE - (*ppos));	if (copy_to_user (buffer, dev->bulk_in_buffer + *ppos, count)) {		result = -EFAULT;	} else {		result = count;		*ppos += count;	}	/* unlock the device */	up(&dev->sem);	return result;}
10457	/local/tlutelli/issta_data/temp/c/2005_temp/2005/10457/018a2cdf1e633497bb4f01eb86a7cbffa611776d/idmouse.c/clean/drivers/usb/misc/idmouse.c