diff options
Diffstat (limited to 'kernel/groups.c')
| -rw-r--r-- | kernel/groups.c | 5 | 
1 files changed, 3 insertions, 2 deletions
diff --git a/kernel/groups.c b/kernel/groups.c index e357bc800111..daae2f2dc6d4 100644 --- a/kernel/groups.c +++ b/kernel/groups.c @@ -86,11 +86,12 @@ static int gid_cmp(const void *_a, const void *_b)  	return gid_gt(a, b) - gid_lt(a, b);  } -static void groups_sort(struct group_info *group_info) +void groups_sort(struct group_info *group_info)  {  	sort(group_info->gid, group_info->ngroups, sizeof(*group_info->gid),  	     gid_cmp, NULL);  } +EXPORT_SYMBOL(groups_sort);  /* a simple bsearch */  int groups_search(const struct group_info *group_info, kgid_t grp) @@ -122,7 +123,6 @@ int groups_search(const struct group_info *group_info, kgid_t grp)  void set_groups(struct cred *new, struct group_info *group_info)  {  	put_group_info(new->group_info); -	groups_sort(group_info);  	get_group_info(group_info);  	new->group_info = group_info;  } @@ -206,6 +206,7 @@ SYSCALL_DEFINE2(setgroups, int, gidsetsize, gid_t __user *, grouplist)  		return retval;  	} +	groups_sort(group_info);  	retval = set_current_groups(group_info);  	put_group_info(group_info);  |