update to 2.6.9-rc1
[linux-flexiantxendom0-3.2.10.git] / mm / mremap.c
index 984b8dd..6be6331 100644 (file)
@@ -324,10 +324,12 @@ unsigned long do_mremap(unsigned long addr,
                        goto out;
        }
        if (vma->vm_flags & VM_LOCKED) {
-               unsigned long locked = current->mm->locked_vm << PAGE_SHIFT;
+               unsigned long locked, lock_limit;
+               locked = current->mm->locked_vm << PAGE_SHIFT;
+               lock_limit = current->rlim[RLIMIT_MEMLOCK].rlim_cur;
                locked += new_len - old_len;
                ret = -EAGAIN;
-               if (locked > current->rlim[RLIMIT_MEMLOCK].rlim_cur)
+               if (locked > lock_limit && !capable(CAP_IPC_LOCK))
                        goto out;
        }
        ret = -ENOMEM;