LASSERT(atomic_read(&new_ctx->pwd->d_count));
save->pwd = dget(current->fs->pwd);
save->pwdmnt = mntget(current->fs->pwdmnt);
+ save->ngroups = current->ngroups;
LASSERT(save->pwd);
LASSERT(save->pwdmnt);
current->fsuid = uc->ouc_fsuid;
current->fsgid = uc->ouc_fsgid;
current->cap_effective = uc->ouc_cap;
+
+ current->ngroups = 0;
+ save->supgid1 = current->groups[0];
+ save->supgid2 = current->groups[1];
if (uc->ouc_suppgid1 != -1)
current->groups[current->ngroups++] = uc->ouc_suppgid1;
if (uc->ouc_suppgid2 != -1)
current->fsuid = saved->fsuid;
current->fsgid = saved->fsgid;
current->cap_effective = saved->cap;
-
- if (uc->ouc_suppgid1 != -1)
- current->ngroups--;
- if (uc->ouc_suppgid2 != -1)
- current->ngroups--;
+ current->ngroups = saved->ngroups;
+ current->groups[0] = saved->supgid1;
+ current->groups[1] = saved->supgid2;
}
/*