diff -NurpP linux-2.6.16-rc2-vs2.1.0.11/arch/x86_64/ia32/syscall32.c linux-2.6.16-rc2-vs2.1.0.11.1/arch/x86_64/ia32/syscall32.c --- linux-2.6.16-rc2-vs2.1.0.11/arch/x86_64/ia32/syscall32.c 2005-10-28 20:49:18 +0200 +++ linux-2.6.16-rc2-vs2.1.0.11.1/arch/x86_64/ia32/syscall32.c 2006-02-13 02:30:05 +0100 @@ -70,7 +70,7 @@ int syscall32_setup_pages(struct linux_b kmem_cache_free(vm_area_cachep, vma); return ret; } - mm->total_vm += npages; + vx_vmpages_add(mm, npages); up_write(&mm->mmap_sem); return 0; } diff -NurpP linux-2.6.16-rc2-vs2.1.0.11/drivers/infiniband/core/uverbs_mem.c linux-2.6.16-rc2-vs2.1.0.11.1/drivers/infiniband/core/uverbs_mem.c --- linux-2.6.16-rc2-vs2.1.0.11/drivers/infiniband/core/uverbs_mem.c 2005-10-28 20:49:23 +0200 +++ linux-2.6.16-rc2-vs2.1.0.11.1/drivers/infiniband/core/uverbs_mem.c 2006-02-13 02:46:47 +0100 @@ -36,6 +36,7 @@ #include #include +#include #include "uverbs.h" @@ -161,7 +162,7 @@ out: if (ret < 0) __ib_umem_release(dev, mem, 0); else - current->mm->locked_vm = locked; + vx_vmlocked_sub(current->mm, current->mm->locked_vm - locked); up_write(¤t->mm->mmap_sem); free_page((unsigned long) page_list); @@ -174,8 +175,8 @@ void ib_umem_release(struct ib_device *d __ib_umem_release(dev, umem, 1); down_write(¤t->mm->mmap_sem); - current->mm->locked_vm -= - PAGE_ALIGN(umem->length + umem->offset) >> PAGE_SHIFT; + vx_vmlocked_sub(current->mm, + PAGE_ALIGN(umem->length + umem->offset) >> PAGE_SHIFT); up_write(¤t->mm->mmap_sem); } @@ -184,7 +185,7 @@ static void ib_umem_account(void *work_p struct ib_umem_account_work *work = work_ptr; down_write(&work->mm->mmap_sem); - work->mm->locked_vm -= work->diff; + vx_vmlocked_sub(work->mm, work->diff); up_write(&work->mm->mmap_sem); mmput(work->mm); kfree(work); diff -NurpP linux-2.6.16-rc2-vs2.1.0.11/kernel/fork.c linux-2.6.16-rc2-vs2.1.0.11.1/kernel/fork.c --- linux-2.6.16-rc2-vs2.1.0.11/kernel/fork.c 2006-02-07 18:29:24 +0100 +++ linux-2.6.16-rc2-vs2.1.0.11.1/kernel/fork.c 2006-02-13 02:33:31 +0100 @@ -220,7 +221,6 @@ static inline int dup_mmap(struct mm_str if (mpnt->vm_flags & VM_DONTCOPY) { long pages = vma_pages(mpnt); vx_vmpages_sub(mm, pages); - // mm->total_vm -= pages; vm_stat_account(mm, mpnt->vm_flags, mpnt->vm_file, -pages); continue;