}
 #endif
 
-static struct vm_area_struct *
-m_next_vma(struct proc_maps_private *priv, struct vm_area_struct *vma)
-{
-       if (vma == priv->tail_vma)
-               return NULL;
-       return vma->vm_next ?: priv->tail_vma;
-}
-
 static void *m_start(struct seq_file *m, loff_t *ppos)
 {
        struct proc_maps_private *priv = m->private;
 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;
+       struct vm_area_struct *next, *vma = v;
+
+       if (vma == priv->tail_vma)
+               next = NULL;
+       else if (vma->vm_next)
+               next = vma->vm_next;
+       else
+               next = priv->tail_vma;
 
-       next = m_next_vma(priv, v);
        *ppos = next ? next->vm_start : -1UL;
 
        return next;