diff options
author | Huang Shijie <shijie8@gmail.com> | 2012-07-31 19:41:49 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2012-07-31 21:42:39 -0400 |
commit | 44de9d0cad41f2c51ef26916842be046b582dcc9 (patch) | |
tree | a9ce576f28e5038e9e3ae2e360cadf176dc74898 /mm/mmap.c | |
parent | df858fa8276f85106f2f5c3cd49c1fa524058070 (diff) |
mm: account the total_vm in the vm_stat_account()
vm_stat_account() accounts the shared_vm, stack_vm and reserved_vm now.
But we can also account for total_vm in the vm_stat_account() which makes
the code tidy.
Even for mprotect_fixup(), we can get the right result in the end.
Signed-off-by: Huang Shijie <shijie8@gmail.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'mm/mmap.c')
-rw-r--r-- | mm/mmap.c | 5 |
1 files changed, 2 insertions, 3 deletions
@@ -943,6 +943,8 @@ void vm_stat_account(struct mm_struct *mm, unsigned long flags, | |||
943 | const unsigned long stack_flags | 943 | const unsigned long stack_flags |
944 | = VM_STACK_FLAGS & (VM_GROWSUP|VM_GROWSDOWN); | 944 | = VM_STACK_FLAGS & (VM_GROWSUP|VM_GROWSDOWN); |
945 | 945 | ||
946 | mm->total_vm += pages; | ||
947 | |||
946 | if (file) { | 948 | if (file) { |
947 | mm->shared_vm += pages; | 949 | mm->shared_vm += pages; |
948 | if ((flags & (VM_EXEC|VM_WRITE)) == VM_EXEC) | 950 | if ((flags & (VM_EXEC|VM_WRITE)) == VM_EXEC) |
@@ -1347,7 +1349,6 @@ munmap_back: | |||
1347 | out: | 1349 | out: |
1348 | perf_event_mmap(vma); | 1350 | perf_event_mmap(vma); |
1349 | 1351 | ||
1350 | mm->total_vm += len >> PAGE_SHIFT; | ||
1351 | vm_stat_account(mm, vm_flags, file, len >> PAGE_SHIFT); | 1352 | vm_stat_account(mm, vm_flags, file, len >> PAGE_SHIFT); |
1352 | if (vm_flags & VM_LOCKED) { | 1353 | if (vm_flags & VM_LOCKED) { |
1353 | if (!mlock_vma_pages_range(vma, addr, addr + len)) | 1354 | if (!mlock_vma_pages_range(vma, addr, addr + len)) |
@@ -1707,7 +1708,6 @@ static int acct_stack_growth(struct vm_area_struct *vma, unsigned long size, uns | |||
1707 | return -ENOMEM; | 1708 | return -ENOMEM; |
1708 | 1709 | ||
1709 | /* Ok, everything looks good - let it rip */ | 1710 | /* Ok, everything looks good - let it rip */ |
1710 | mm->total_vm += grow; | ||
1711 | if (vma->vm_flags & VM_LOCKED) | 1711 | if (vma->vm_flags & VM_LOCKED) |
1712 | mm->locked_vm += grow; | 1712 | mm->locked_vm += grow; |
1713 | vm_stat_account(mm, vma->vm_flags, vma->vm_file, grow); | 1713 | vm_stat_account(mm, vma->vm_flags, vma->vm_file, grow); |
@@ -1889,7 +1889,6 @@ static void remove_vma_list(struct mm_struct *mm, struct vm_area_struct *vma) | |||
1889 | 1889 | ||
1890 | if (vma->vm_flags & VM_ACCOUNT) | 1890 | if (vma->vm_flags & VM_ACCOUNT) |
1891 | nr_accounted += nrpages; | 1891 | nr_accounted += nrpages; |
1892 | mm->total_vm -= nrpages; | ||
1893 | vm_stat_account(mm, vma->vm_flags, vma->vm_file, -nrpages); | 1892 | vm_stat_account(mm, vma->vm_flags, vma->vm_file, -nrpages); |
1894 | vma = remove_vma(vma); | 1893 | vma = remove_vma(vma); |
1895 | } while (vma); | 1894 | } while (vma); |