From f9eb248e24b322e81da8fb834350bfdaff14b341 Mon Sep 17 00:00:00 2001 From: Laurent Dufour Date: Tue, 17 Apr 2018 16:33:13 +0200 Subject: [PATCH] mm: introduce INIT_VMA() Some VMA struct fields need to be initialized once the VMA structure is allocated. Currently this only concerns anon_vma_chain field but some other will be added to support the speculative page fault. Instead of spreading the initialization calls all over the code, let's introduce a dedicated inline function. Change-Id: I9f6b29dc74055354318b548e2b6b22c37d4c61bb Signed-off-by: Laurent Dufour Patch-mainline: linux-mm @ Tue, 17 Apr 2018 16:33:13 [vinmenon@codeaurora.org: trivial merge conflict fixes] Signed-off-by: Vinayak Menon [charante@codeaurora.org: merge conflict fixes] Signed-off-by: Charan Teja Reddy --- include/linux/mm.h | 7 ++++++- kernel/fork.c | 2 +- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/include/linux/mm.h b/include/linux/mm.h index 15d93dff908e..16155e7351e4 100644 --- a/include/linux/mm.h +++ b/include/linux/mm.h @@ -529,6 +529,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 = {}; @@ -536,7 +541,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 f89e8c85f2b8..33496e0cdcff 100644 --- a/kernel/fork.c +++ b/kernel/fork.c @@ -359,7 +359,7 @@ struct vm_area_struct *vm_area_dup(struct vm_area_struct *orig) if (new) { *new = *orig; - INIT_LIST_HEAD(&new->anon_vma_chain); + INIT_VMA(new); } return new; }