mm/mpol: Introduce vma_put_policy()
Subsystems (3)
Commit-ID: f1b39afe3e55ff32f987200531fab3f548ec2f61 Gitweb: http://git.kernel.org/tip/f1b39afe3e55ff32f987200531fab3f548ec2f61 Author: Peter Zijlstra <[email protected]> AuthorDate: Thu, 8 Mar 2012 23:10:02 +0100 Committer: Ingo Molnar <[email protected]> CommitDate: Fri, 18 May 2012 08:16:19 +0200
mm/mpol: Introduce vma_put_policy()
In preparation of other changes, create a new interface so that we can later extend its behaviour without having to touch all these sites.
Signed-off-by Peter Zijlstra <[email protected]>
Cc Suresh Siddha <[email protected]>
Cc Paul Turner <[email protected]>
Cc Dan Smith <[email protected]>
Cc Bharata B Rao <[email protected]>
Cc Lee Schermerhorn <[email protected]>
Cc Christoph Lameter <[email protected]>
Cc Rik van Riel <[email protected]>
Cc Andrea Arcangeli <[email protected]>
Cc Andrew Morton <[email protected]>
Cc Linus Torvalds <[email protected]>
Signed-off-by Ingo Molnar <[email protected]>
--- include/linux/mempolicy.h | 5 +++++ mm/mempolicy.c | 5 +++++ mm/mmap.c | 8 ++++---- 3 files changed, 14 insertions(+), 4 deletions(-)
include/linux/mempolicy.h +5 -0
@@ -170,6 +170,7 @@ static inline struct mempolicy *mpol_dup(struct mempolicy *pol)#define vma_set_policy (vma, pol) ((vma)->vm_policy = (pol))extern int vma_dup_policy (struct vm_area_struct *new,struct vm_area_struct *old); +extern void vma_put_policy (struct vm_area_struct *vma);static inline void mpol_get (struct mempolicy *pol) {
@@ -313,6 +314,10 @@ mpol_shared_policy_lookup(struct shared_policy *sp, unsigned long idx)#define vma_set_policy (vma, pol) do {} while(0)#define vma_dup_policy (new, old) (0) +static inline void vma_put_policy (struct vm_area_struct *vma) +{ +} +static inline void numa_policy_init (void ) { }
mm/mempolicy.c +5 -0
@@ -1951,6 +1951,11 @@ int vma_dup_policy(struct vm_area_struct *new, struct vm_area_struct *old)return 0 ; } +void vma_put_policy (struct vm_area_struct *vma) +{ +mpol_put (vma_policy (vma)); +} +/* * If *frompol needs [has] an extra ref, copy *frompol to *tompol , * eliminate the * MPOL_F_* flags that require conditional ref and
mm/mmap.c +4 -4
@@ -235,7 +235,7 @@ static struct vm_area_struct *remove_vma(struct vm_area_struct *vma)if (vma->vm_flags &VM_EXECUTABLE )removed_exe_file_vma (vma->vm_mm); } -mpol_put (vma_policy (vma)); +vma_put_policy (vma);kmem_cache_free (vm_area_cachep, vma);return next; }
@@ -626,7 +626,7 @@ again: remove_next = 1 + (end > next->vm_end);if (next->anon_vma)anon_vma_merge (vma, next); mm->map_count--; -mpol_put (vma_policy (next)); +vma_put_policy (next);kmem_cache_free (vm_area_cachep, next);/* * In mprotect's case 6 (see comments on vma_merge),
@@ -2022,7 +2022,7 @@ static int __split_vma(struct mm_struct * mm, struct vm_area_struct * vma, }unlink_anon_vmas (new); out_free_mpol: -mpol_put (new->vm_policy); +vma_put_policy (new); out_free_vma:kmem_cache_free (vm_area_cachep, new); out_err:
@@ -2425,7 +2425,7 @@ struct vm_area_struct *copy_vma(struct vm_area_struct **vmap,return new_vma; out_free_mempol: -mpol_put (new_vma->vm_policy); +vma_put_policy (new_vma); out_free_vma:kmem_cache_free (vm_area_cachep, new_vma);return NULL ;