diff options
Diffstat (limited to 'fs/seq_file.c')
| -rw-r--r-- | fs/seq_file.c | 9 | 
1 files changed, 8 insertions, 1 deletions
| diff --git a/fs/seq_file.c b/fs/seq_file.c index 368bfb92b115..ca69fb99e41a 100644 --- a/fs/seq_file.c +++ b/fs/seq_file.c @@ -15,7 +15,7 @@  #include <linux/printk.h>  #include <linux/string_helpers.h> -#include <asm/uaccess.h> +#include <linux/uaccess.h>  #include <asm/page.h>  static void seq_set_overflow(struct seq_file *m) @@ -190,6 +190,13 @@ ssize_t seq_read(struct file *file, char __user *buf, size_t size, loff_t *ppos)  	 */  	m->version = file->f_version; +	/* +	 * if request is to read from zero offset, reset iterator to first +	 * record as it might have been already advanced by previous requests +	 */ +	if (*ppos == 0) +		m->index = 0; +  	/* Don't assume *ppos is where we left it */  	if (unlikely(*ppos != m->read_pos)) {  		while ((err = traverse(m, *ppos)) == -EAGAIN) |