diff --git a/include/linux/mm.h b/include/linux/mm.h index 471acc25b9fd..cfb64a602a53 100644 --- a/include/linux/mm.h +++ b/include/linux/mm.h @@ -625,6 +625,11 @@ struct vm_operations_struct { unsigned long addr); }; +static inline void INIT_VMA(struct vm_area_struct *vma) +{ + INIT_LIST_HEAD(&vma->anon_vma_chain); +} + static inline void vma_init(struct vm_area_struct *vma, struct mm_struct *mm) { static const struct vm_operations_struct dummy_vm_ops = {}; @@ -632,7 +637,7 @@ static inline void vma_init(struct vm_area_struct *vma, struct mm_struct *mm) memset(vma, 0, sizeof(*vma)); vma->vm_mm = mm; vma->vm_ops = &dummy_vm_ops; - INIT_LIST_HEAD(&vma->anon_vma_chain); + INIT_VMA(vma); } static inline void vma_set_anonymous(struct vm_area_struct *vma) diff --git a/kernel/fork.c b/kernel/fork.c index a7a21836812f..8ba76a608d79 100644 --- a/kernel/fork.c +++ b/kernel/fork.c @@ -365,7 +365,7 @@ struct vm_area_struct *vm_area_dup(struct vm_area_struct *orig) * will be reinitialized. */ *new = data_race(*orig); - INIT_LIST_HEAD(&new->anon_vma_chain); + INIT_VMA(new); new->vm_next = new->vm_prev = NULL; } return new;