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 <a.p.zijlstra@xxxxxxxxx> --- include/linux/mempolicy.h | 5 +++++ mm/mempolicy.c | 5 +++++ mm/mmap.c | 8 ++++---- 3 files changed, 14 insertions(+), 4 deletions(-) --- a/include/linux/mempolicy.h +++ b/include/linux/mempolicy.h @@ -169,6 +169,7 @@ static inline struct mempolicy *mpol_dup #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) { @@ -315,6 +316,10 @@ mpol_shared_policy_lookup(struct shared_ #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 *) +{ +} + static inline void numa_policy_init(void) { } --- a/mm/mempolicy.c +++ b/mm/mempolicy.c @@ -1982,6 +1982,11 @@ int vma_dup_policy(struct vm_area_struct 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 --- a/mm/mmap.c +++ b/mm/mmap.c @@ -236,7 +236,7 @@ static struct vm_area_struct *remove_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; } @@ -633,7 +633,7 @@ again: remove_next = 1 + (end > next-> 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), @@ -1994,7 +1994,7 @@ static int __split_vma(struct mm_struct } 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: @@ -2392,7 +2392,7 @@ struct vm_area_struct *copy_vma(struct v 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; -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to majordomo@xxxxxxxxx. For more info on Linux MM, see: http://www.linux-mm.org/ . Fight unfair telecom internet charges in Canada: sign http://stopthemeter.ca/ Don't email: <a href=mailto:"dont@xxxxxxxxx"> email@xxxxxxxxx </a>