When a normal user is trying to allocate huge pages using shmget(), the user is not able to get the memory even if the gid is present in /proc/sys/vm/hugetlb_shm_group. The function user_shm_lock() is not successful. The user does not have the capability to perform a CAP_IPC_LOCK. A check is added here to see whether the gid is present in hugetlb_shm_group. Please review the patch. Signed-off-by: Ciju Rajan (ciju@linux.vnet.ibm.com) --- --- linux-2.6.23/mm/mlock.c.orig 2007-11-14 17:35:02.000000000 +0530 +++ linux-2.6.23/mm/mlock.c 2007-11-14 17:50:31.000000000 +0530 @@ -8,6 +8,7 @@ #include <linux/capability.h> #include <linux/mman.h> #include <linux/mm.h> +#include <linux/hugetlb.h> #include <linux/mempolicy.h> #include <linux/syscalls.h> #include <linux/sched.h> @@ -248,8 +249,14 @@ int user_shm_lock(size_t size, struct us allowed = 1; lock_limit >>= PAGE_SHIFT; spin_lock(&shmlock_user_lock); +#ifdef CONFIG_HUGETLB_PAGE + if (!allowed && + locked + user->locked_shm > lock_limit && + (!(capable(CAP_IPC_LOCK) || in_group_p(sysctl_hugetlb_shm_group)))) +#else if (!allowed && locked + user->locked_shm > lock_limit && !capable(CAP_IPC_LOCK)) +#endif goto out; get_uid(user); user->locked_shm += locked; -
| Greg Kroah-Hartman | [PATCH 001/196] Chinese: Add the known_regression URI to the HOWTO |
| Andrew Morton | 2.6.25-mm1 |
| david | Re: Dual-Licensing Linux Kernel with GPL V2 and GPL V3 |
| Bart Van Assche | Integration of SCST in the mainstream Linux kernel |
git: | |
| Jarek Poplawski | Re: [PATCH] pkt_sched: Destroy gen estimators under rtnl_lock(). |
| Gerrit Renker | [PATCH 15/37] dccp: Set per-connection CCIDs via socket options |
| David Miller | [GIT]: Networking |
| Natalie Protasevich | [BUG] New Kernel Bugs |
