diff options
Diffstat (limited to 'drivers/staging/lustre/lustre/obdclass/idmap.c')
-rw-r--r-- | drivers/staging/lustre/lustre/obdclass/idmap.c | 21 |
1 files changed, 12 insertions, 9 deletions
diff --git a/drivers/staging/lustre/lustre/obdclass/idmap.c b/drivers/staging/lustre/lustre/obdclass/idmap.c index 622f8d165275..ec2590f5cfe9 100644 --- a/drivers/staging/lustre/lustre/obdclass/idmap.c +++ b/drivers/staging/lustre/lustre/obdclass/idmap.c @@ -59,8 +59,7 @@ * groups_search() is copied from linux kernel! * A simple bsearch. */ -static int lustre_groups_search(group_info_t *group_info, - gid_t grp) +static int lustre_groups_search(const struct group_info *group_info, gid_t grp) { int left, right; @@ -71,7 +70,8 @@ static int lustre_groups_search(group_info_t *group_info, right = group_info->ngroups; while (left < right) { int mid = (left + right) / 2; - int cmp = grp - CFS_GROUP_AT(group_info, mid); + int cmp = grp - + from_kgid(&init_user_ns, CFS_GROUP_AT(group_info, mid)); if (cmp > 0) left = mid + 1; @@ -83,7 +83,7 @@ static int lustre_groups_search(group_info_t *group_info, return 0; } -void lustre_groups_from_list(group_info_t *ginfo, gid_t *glist) +void lustre_groups_from_list(struct group_info *ginfo, gid_t *glist) { int i; int count = ginfo->ngroups; @@ -102,7 +102,7 @@ EXPORT_SYMBOL(lustre_groups_from_list); /* groups_sort() is copied from linux kernel! */ /* a simple shell-metzner sort */ -void lustre_groups_sort(group_info_t *group_info) +void lustre_groups_sort(struct group_info *group_info) { int base, max, stride; int gidsetsize = group_info->ngroups; @@ -116,16 +116,19 @@ void lustre_groups_sort(group_info_t *group_info) for (base = 0; base < max; base++) { int left = base; int right = left + stride; - gid_t tmp = CFS_GROUP_AT(group_info, right); + gid_t tmp = from_kgid(&init_user_ns, + CFS_GROUP_AT(group_info, right)); while (left >= 0 && - CFS_GROUP_AT(group_info, left) > tmp) { + tmp < from_kgid(&init_user_ns, + CFS_GROUP_AT(group_info, left))) { CFS_GROUP_AT(group_info, right) = CFS_GROUP_AT(group_info, left); right = left; left -= stride; } - CFS_GROUP_AT(group_info, right) = tmp; + CFS_GROUP_AT(group_info, right) = + make_kgid(&init_user_ns, tmp); } stride /= 3; } @@ -137,7 +140,7 @@ int lustre_in_group_p(struct lu_ucred *mu, gid_t grp) int rc = 1; if (grp != mu->uc_fsgid) { - group_info_t *group_info = NULL; + struct group_info *group_info = NULL; if (mu->uc_ginfo || !mu->uc_identity || mu->uc_valid == UCRED_OLD) |