From: Hubert Jasudowicz <hubert.jasudowicz@xxxxxxxxx> Subject: groups: simplify struct group_info allocation Combine kmalloc and vmalloc into a single call. Use struct_size macro instead of direct size calculation. Link: https://lkml.kernel.org/r/ba9ba5beea9a44b7196c41a0d9528abd5f20dd2e.1611620846.git.hubert.jasudowicz@xxxxxxxxx Signed-off-by: Hubert Jasudowicz <hubert.jasudowicz@xxxxxxxxx> Cc: Gao Xiang <xiang@xxxxxxxxxx> Cc: Micah Morton <mortonm@xxxxxxxxxxxx> Cc: Michael Kelley <mikelley@xxxxxxxxxxxxx> Cc: "Peter Zijlstra (Intel)" <peterz@xxxxxxxxxxxxx> Cc: Thomas Cedeno <thomascedeno@xxxxxxxxxx> Signed-off-by: Andrew Morton <akpm@xxxxxxxxxxxxxxxxxxxx> --- kernel/groups.c | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) --- a/kernel/groups.c~groups-simplify-struct-group_info-allocation +++ a/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; _