>>Sorry, forgot to write that all these patches are against 2.6.12-rc4... >> >>This patch fixes mm->total_vm and mm->locked_vm acctounting in case >>when move_page_tables() fails inside move_vma(). >> >>Signed-Off-By: Kirill Korotaev >> >>--- ./mm/mremap.c.mmacct 2005-05-10 16:10:40.000000000 +0400 >>+++ ./mm/mremap.c 2005-05-10 18:12:13.000000000 +0400 >>@@ -213,6 +213,7 @@ static unsigned long move_vma(struct vm_ >> old_len = new_len; >> old_addr = new_addr; >> new_addr = -ENOMEM; >>+ new_len = 0; >> } >> >> /* Conceal VM_ACCOUNT so old reservation is not undone */ > > > Are you sure? > > The way it's supposed to work is that the do_munmap(,,old_len) which > follows, which normally unmaps the area moved from, when unsuccessful > unmaps the area moved to: which will "mistakenly" decrement total_vm etc. > by old_len, which needs to be bumped back up by that amount before leaving. Yup, I was wrong. Sorry for taking your time. It would be nice to accept this small patch with a comment. Kirill