Merge master.kernel.org:/pub/scm/linux/kernel/git/bart/ide-2.6
[linux-drm-fsl-dcu.git] / mm / mlock.c
index b90c59573abf5da8bd00dcc7b224796ce66befc5..4d3fea267e0dabde457091a2618a0efe8dba864d 100644 (file)
 #include <linux/mm.h>
 #include <linux/mempolicy.h>
 #include <linux/syscalls.h>
+#include <linux/sched.h>
+#include <linux/module.h>
 
+int can_do_mlock(void)
+{
+       if (capable(CAP_IPC_LOCK))
+               return 1;
+       if (current->signal->rlim[RLIMIT_MEMLOCK].rlim_cur != 0)
+               return 1;
+       return 0;
+}
+EXPORT_SYMBOL(can_do_mlock);
 
 static int mlock_fixup(struct vm_area_struct *vma, struct vm_area_struct **prev,
        unsigned long start, unsigned long end, unsigned int newflags)
@@ -65,7 +76,7 @@ success:
                        ret = make_pages_present(start, end);
        }
 
-       vma->vm_mm->locked_vm -= pages;
+       mm->locked_vm -= pages;
 out:
        if (ret == -ENOMEM)
                ret = -EAGAIN;