diff options
Diffstat (limited to 'mm/mlock.c')
-rw-r--r-- | mm/mlock.c | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/mm/mlock.c b/mm/mlock.c index 3446b7ef731e..4d3fea267e0d 100644 --- a/mm/mlock.c +++ b/mm/mlock.c @@ -10,7 +10,18 @@ #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) |