diff options
| author | Oleg Nesterov <oleg@redhat.com> | 2013-09-11 17:20:14 -0400 |
|---|---|---|
| committer | Linus Torvalds <torvalds@linux-foundation.org> | 2013-09-11 18:57:00 -0400 |
| commit | ef0855d334e1e4af7c3e0c42146a8479ea14a5ab (patch) | |
| tree | 5955b0424bb392e1949acc0ad5066cb461bef867 /kernel | |
| parent | c07303c0af38ffb1e5fd9b5ff37d0798298a7acf (diff) | |
mm: mempolicy: turn vma_set_policy() into vma_dup_policy()
Simple cleanup. Every user of vma_set_policy() does the same work, this
looks a bit annoying imho. And the new trivial helper which does
mpol_dup() + vma_set_policy() to simplify the callers.
Signed-off-by: Oleg Nesterov <oleg@redhat.com>
Cc: KOSAKI Motohiro <kosaki.motohiro@jp.fujitsu.com>
Cc: Mel Gorman <mgorman@suse.de>
Cc: Rik van Riel <riel@redhat.com>
Cc: Andi Kleen <andi@firstfloor.org>
Cc: David Rientjes <rientjes@google.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'kernel')
| -rw-r--r-- | kernel/fork.c | 9 |
1 files changed, 3 insertions, 6 deletions
diff --git a/kernel/fork.c b/kernel/fork.c index 84703db06cf3..81ccb4f010c2 100644 --- a/kernel/fork.c +++ b/kernel/fork.c | |||
| @@ -351,7 +351,6 @@ static int dup_mmap(struct mm_struct *mm, struct mm_struct *oldmm) | |||
| 351 | struct rb_node **rb_link, *rb_parent; | 351 | struct rb_node **rb_link, *rb_parent; |
| 352 | int retval; | 352 | int retval; |
| 353 | unsigned long charge; | 353 | unsigned long charge; |
| 354 | struct mempolicy *pol; | ||
| 355 | 354 | ||
| 356 | uprobe_start_dup_mmap(); | 355 | uprobe_start_dup_mmap(); |
| 357 | down_write(&oldmm->mmap_sem); | 356 | down_write(&oldmm->mmap_sem); |
| @@ -400,11 +399,9 @@ static int dup_mmap(struct mm_struct *mm, struct mm_struct *oldmm) | |||
| 400 | goto fail_nomem; | 399 | goto fail_nomem; |
| 401 | *tmp = *mpnt; | 400 | *tmp = *mpnt; |
| 402 | INIT_LIST_HEAD(&tmp->anon_vma_chain); | 401 | INIT_LIST_HEAD(&tmp->anon_vma_chain); |
| 403 | pol = mpol_dup(vma_policy(mpnt)); | 402 | retval = vma_dup_policy(mpnt, tmp); |
| 404 | retval = PTR_ERR(pol); | 403 | if (retval) |
| 405 | if (IS_ERR(pol)) | ||
| 406 | goto fail_nomem_policy; | 404 | goto fail_nomem_policy; |
| 407 | vma_set_policy(tmp, pol); | ||
| 408 | tmp->vm_mm = mm; | 405 | tmp->vm_mm = mm; |
| 409 | if (anon_vma_fork(tmp, mpnt)) | 406 | if (anon_vma_fork(tmp, mpnt)) |
| 410 | goto fail_nomem_anon_vma_fork; | 407 | goto fail_nomem_anon_vma_fork; |
| @@ -472,7 +469,7 @@ out: | |||
| 472 | uprobe_end_dup_mmap(); | 469 | uprobe_end_dup_mmap(); |
| 473 | return retval; | 470 | return retval; |
| 474 | fail_nomem_anon_vma_fork: | 471 | fail_nomem_anon_vma_fork: |
| 475 | mpol_put(pol); | 472 | mpol_put(vma_policy(tmp)); |
| 476 | fail_nomem_policy: | 473 | fail_nomem_policy: |
| 477 | kmem_cache_free(vm_area_cachep, tmp); | 474 | kmem_cache_free(vm_area_cachep, tmp); |
| 478 | fail_nomem: | 475 | fail_nomem: |
