static void *m_start(struct seq_file *m, loff_t *ppos)
 {
        struct proc_maps_private *priv = m->private;
-       unsigned long last_addr = m->version;
+       unsigned long last_addr = *ppos;
        struct mm_struct *mm;
        struct vm_area_struct *vma;
 
        return priv->tail_vma;
 }
 
-static void *m_next(struct seq_file *m, void *v, loff_t *pos)
+static void *m_next(struct seq_file *m, void *v, loff_t *ppos)
 {
        struct proc_maps_private *priv = m->private;
        struct vm_area_struct *next;
 
-       (*pos)++;
        next = m_next_vma(priv, v);
-       m->version = next ? next->vm_start : -1UL;
+       *ppos = next ? next->vm_start : -1UL;
 
        return next;
 }