Merge to Fedora kernel-2.6.7-1.494 and VServer 1.9.1.12. Fix some previous merge...
[linux-2.6.git] / mm / mremap.c
index 99b2576..a47554b 100644 (file)
@@ -16,7 +16,6 @@
 #include <linux/fs.h>
 #include <linux/highmem.h>
 #include <linux/security.h>
-#include <linux/vs_memory.h>
 
 #include <asm/uaccess.h>
 #include <asm/cacheflush.h>
@@ -334,6 +333,10 @@ unsigned long do_mremap(unsigned long addr,
                ret = -EAGAIN;
                if (locked > lock_limit && !capable(CAP_IPC_LOCK))
                        goto out;
+               ret = -ENOMEM;
+               if (!vx_vmlocked_avail(current->mm,
+                       (new_len - old_len) >> PAGE_SHIFT))
+                       goto out;
        }
        ret = -ENOMEM;
        if ((current->mm->total_vm << PAGE_SHIFT) + (new_len - old_len)
@@ -369,7 +372,7 @@ unsigned long do_mremap(unsigned long addr,
                        vx_vmpages_add(current->mm, pages);
                        if (vma->vm_flags & VM_LOCKED) {
                                // current->mm->locked_vm += pages;
-                               vx_vmlocked_add(current->mm, pages);
+                               vx_vmlocked_add(vma->vm_mm, pages);
                                make_pages_present(addr + old_len,
                                                   addr + new_len);
                        }