Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 71799062 authored by Kirill Korotaev's avatar Kirill Korotaev Committed by Linus Torvalds
Browse files

[PATCH] mm acct accounting fix



This patch fixes mm->total_vm and mm->locked_vm acctounting in case when
move_page_tables() fails inside move_vma().

Signed-Off-By: default avatarKirill Korotaev <dev@sw.ru>
Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
parent 202d182a
Loading
Loading
Loading
Loading
+6 −1
Original line number Diff line number Diff line
@@ -224,6 +224,12 @@ static unsigned long move_vma(struct vm_area_struct *vma,
			split = 1;
	}

	/*
	 * if we failed to move page tables we still do total_vm increment
	 * since do_munmap() will decrement it by old_len == new_len
	 */
	mm->total_vm += new_len >> PAGE_SHIFT;

	if (do_munmap(mm, old_addr, old_len) < 0) {
		/* OOM: unable to split vma, just get accounts right */
		vm_unacct_memory(excess >> PAGE_SHIFT);
@@ -237,7 +243,6 @@ static unsigned long move_vma(struct vm_area_struct *vma,
			vma->vm_next->vm_flags |= VM_ACCOUNT;
	}

	mm->total_vm += new_len >> PAGE_SHIFT;
	__vm_stat_account(mm, vma->vm_flags, vma->vm_file, new_len>>PAGE_SHIFT);
	if (vm_flags & VM_LOCKED) {
		mm->locked_vm += new_len >> PAGE_SHIFT;