|
@@ -35,19 +35,16 @@ read_cris_profile(struct file *file, char __user *buf,
|
|
|
size_t count, loff_t *ppos)
|
|
|
{
|
|
|
unsigned long p = *ppos;
|
|
|
+ ssize_t ret;
|
|
|
|
|
|
- if (p > SAMPLE_BUFFER_SIZE)
|
|
|
- return 0;
|
|
|
+ ret = simple_read_from_buffer(buf, count, ppos, sample_buffer,
|
|
|
+ SAMPLE_BUFFER_SIZE);
|
|
|
+ if (ret < 0)
|
|
|
+ return ret;
|
|
|
|
|
|
- if (p + count > SAMPLE_BUFFER_SIZE)
|
|
|
- count = SAMPLE_BUFFER_SIZE - p;
|
|
|
- if (copy_to_user(buf, sample_buffer + p,count))
|
|
|
- return -EFAULT;
|
|
|
+ memset(sample_buffer + p, 0, ret);
|
|
|
|
|
|
- memset(sample_buffer + p, 0, count);
|
|
|
- *ppos += count;
|
|
|
-
|
|
|
- return count;
|
|
|
+ return ret;
|
|
|
}
|
|
|
|
|
|
static ssize_t
|