mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-28 10:41:38 -04:00
userns: Convert group_info values from gid_t to kgid_t.
As a first step to converting struct cred to be all kuid_t and kgid_t values convert the group values stored in group_info to always be kgid_t values. Unless user namespaces are used this change should have no effect. Acked-by: Serge Hallyn <[email protected]> Signed-off-by: Eric W. Biederman <[email protected]>
This commit is contained in:
parent
22d917d80e
commit
ae2975bc34
12 changed files with 104 additions and 49 deletions
|
|
@ -134,11 +134,14 @@ SYSCALL_DEFINE1(setfsgid16, old_gid_t, gid)
|
|||
static int groups16_to_user(old_gid_t __user *grouplist,
|
||||
struct group_info *group_info)
|
||||
{
|
||||
struct user_namespace *user_ns = current_user_ns();
|
||||
int i;
|
||||
old_gid_t group;
|
||||
kgid_t kgid;
|
||||
|
||||
for (i = 0; i < group_info->ngroups; i++) {
|
||||
group = high2lowgid(GROUP_AT(group_info, i));
|
||||
kgid = GROUP_AT(group_info, i);
|
||||
group = high2lowgid(from_kgid_munged(user_ns, kgid));
|
||||
if (put_user(group, grouplist+i))
|
||||
return -EFAULT;
|
||||
}
|
||||
|
|
@ -149,13 +152,20 @@ static int groups16_to_user(old_gid_t __user *grouplist,
|
|||
static int groups16_from_user(struct group_info *group_info,
|
||||
old_gid_t __user *grouplist)
|
||||
{
|
||||
struct user_namespace *user_ns = current_user_ns();
|
||||
int i;
|
||||
old_gid_t group;
|
||||
kgid_t kgid;
|
||||
|
||||
for (i = 0; i < group_info->ngroups; i++) {
|
||||
if (get_user(group, grouplist+i))
|
||||
return -EFAULT;
|
||||
GROUP_AT(group_info, i) = low2highgid(group);
|
||||
|
||||
kgid = make_kgid(user_ns, low2highgid(group));
|
||||
if (!gid_valid(kgid))
|
||||
return -EINVAL;
|
||||
|
||||
GROUP_AT(group_info, i) = kgid;
|
||||
}
|
||||
|
||||
return 0;
|
||||
|
|
|
|||
Loading…
Reference in a new issue