X-Git-Url: http://git.monstr.eu/?a=blobdiff_plain;f=kernel%2Fgroups.c;h=787b381c7c0026c31793ab1ebd0c2383ced820f0;hb=c815f04ba94940fbc303a6ea9669e7da87f8e77d;hp=6ee6691f6839f64554aceeb1bbeca0785feda08d;hpb=4b4193256c8d3bc3a5397b5cd9494c2ad386317d;p=linux-2.6-microblaze.git diff --git a/kernel/groups.c b/kernel/groups.c index 6ee6691f6839..787b381c7c00 100644 --- a/kernel/groups.c +++ b/kernel/groups.c @@ -15,12 +15,7 @@ struct group_info *groups_alloc(int gidsetsize) { struct group_info *gi; - unsigned int len; - - len = sizeof(struct group_info) + sizeof(kgid_t) * gidsetsize; - gi = kmalloc(len, GFP_KERNEL_ACCOUNT|__GFP_NOWARN|__GFP_NORETRY); - if (!gi) - gi = __vmalloc(len, GFP_KERNEL_ACCOUNT); + gi = kvmalloc(struct_size(gi, gid, gidsetsize), GFP_KERNEL_ACCOUNT); if (!gi) return NULL; @@ -178,7 +173,7 @@ bool may_setgroups(void) { struct user_namespace *user_ns = current_user_ns(); - return ns_capable(user_ns, CAP_SETGID) && + return ns_capable_setid(user_ns, CAP_SETGID) && userns_may_setgroups(user_ns); }