Commit fc0664fd authored by NeilBrown's avatar NeilBrown Committed by Anna Schumaker

SUNRPC: remove groupinfo from struct auth_cred.

We can use cred->groupinfo (from the 'struct cred') instead.
Signed-off-by: default avatarNeilBrown <neilb@suse.com>
Signed-off-by: default avatarAnna Schumaker <Anna.Schumaker@Netapp.com>
parent 97f68c6b
...@@ -28,9 +28,6 @@ ...@@ -28,9 +28,6 @@
#define FF_LAYOUT_POLL_RETRY_MAX (15*HZ) #define FF_LAYOUT_POLL_RETRY_MAX (15*HZ)
#define FF_LAYOUTRETURN_MAXERR 20 #define FF_LAYOUTRETURN_MAXERR 20
static struct group_info *ff_zero_group;
static void ff_layout_read_record_layoutstats_done(struct rpc_task *task, static void ff_layout_read_record_layoutstats_done(struct rpc_task *task,
struct nfs_pgio_header *hdr); struct nfs_pgio_header *hdr);
static int ff_layout_mirror_prepare_stats(struct pnfs_layout_hdr *lo, static int ff_layout_mirror_prepare_stats(struct pnfs_layout_hdr *lo,
...@@ -414,7 +411,7 @@ ff_layout_alloc_lseg(struct pnfs_layout_hdr *lh, ...@@ -414,7 +411,7 @@ ff_layout_alloc_lseg(struct pnfs_layout_hdr *lh,
for (i = 0; i < fls->mirror_array_cnt; i++) { for (i = 0; i < fls->mirror_array_cnt; i++) {
struct nfs4_ff_layout_mirror *mirror; struct nfs4_ff_layout_mirror *mirror;
struct auth_cred acred = { .group_info = ff_zero_group }; struct auth_cred acred = {};
struct rpc_cred __rcu *cred; struct rpc_cred __rcu *cred;
struct cred *kcred; struct cred *kcred;
u32 ds_count, fh_count, id; u32 ds_count, fh_count, id;
...@@ -2400,11 +2397,6 @@ static int __init nfs4flexfilelayout_init(void) ...@@ -2400,11 +2397,6 @@ static int __init nfs4flexfilelayout_init(void)
{ {
printk(KERN_INFO "%s: NFSv4 Flexfile Layout Driver Registering...\n", printk(KERN_INFO "%s: NFSv4 Flexfile Layout Driver Registering...\n",
__func__); __func__);
if (!ff_zero_group) {
ff_zero_group = groups_alloc(0);
if (!ff_zero_group)
return -ENOMEM;
}
return pnfs_register_layoutdriver(&flexfilelayout_type); return pnfs_register_layoutdriver(&flexfilelayout_type);
} }
...@@ -2413,10 +2405,6 @@ static void __exit nfs4flexfilelayout_exit(void) ...@@ -2413,10 +2405,6 @@ static void __exit nfs4flexfilelayout_exit(void)
printk(KERN_INFO "%s: NFSv4 Flexfile Layout Driver Unregistering...\n", printk(KERN_INFO "%s: NFSv4 Flexfile Layout Driver Unregistering...\n",
__func__); __func__);
pnfs_unregister_layoutdriver(&flexfilelayout_type); pnfs_unregister_layoutdriver(&flexfilelayout_type);
if (ff_zero_group) {
put_group_info(ff_zero_group);
ff_zero_group = NULL;
}
} }
MODULE_ALIAS("nfs-layouttype4-4"); MODULE_ALIAS("nfs-layouttype4-4");
......
...@@ -49,7 +49,6 @@ struct auth_cred { ...@@ -49,7 +49,6 @@ struct auth_cred {
const struct cred *cred; const struct cred *cred;
kuid_t uid; kuid_t uid;
kgid_t gid; kgid_t gid;
struct group_info *group_info;
const char *principal; const char *principal;
unsigned long ac_flags; unsigned long ac_flags;
unsigned char machine_cred : 1; unsigned char machine_cred : 1;
......
...@@ -658,7 +658,6 @@ rpcauth_lookupcred(struct rpc_auth *auth, int flags) ...@@ -658,7 +658,6 @@ rpcauth_lookupcred(struct rpc_auth *auth, int flags)
memset(&acred, 0, sizeof(acred)); memset(&acred, 0, sizeof(acred));
acred.uid = cred->fsuid; acred.uid = cred->fsuid;
acred.gid = cred->fsgid; acred.gid = cred->fsgid;
acred.group_info = cred->group_info;
acred.cred = cred; acred.cred = cred;
ret = auth->au_ops->lookup_cred(auth, &acred, flags); ret = auth->au_ops->lookup_cred(auth, &acred, flags);
return ret; return ret;
......
...@@ -113,11 +113,8 @@ generic_create_cred(struct rpc_auth *auth, struct auth_cred *acred, int flags, g ...@@ -113,11 +113,8 @@ generic_create_cred(struct rpc_auth *auth, struct auth_cred *acred, int flags, g
gcred->acred.uid = acred->uid; gcred->acred.uid = acred->uid;
gcred->acred.gid = acred->gid; gcred->acred.gid = acred->gid;
gcred->acred.group_info = acred->group_info;
gcred->acred.cred = gcred->gc_base.cr_cred; gcred->acred.cred = gcred->gc_base.cr_cred;
gcred->acred.ac_flags = 0; gcred->acred.ac_flags = 0;
if (gcred->acred.group_info != NULL)
get_group_info(gcred->acred.group_info);
gcred->acred.machine_cred = acred->machine_cred; gcred->acred.machine_cred = acred->machine_cred;
gcred->acred.principal = acred->principal; gcred->acred.principal = acred->principal;
...@@ -135,8 +132,6 @@ generic_free_cred(struct rpc_cred *cred) ...@@ -135,8 +132,6 @@ generic_free_cred(struct rpc_cred *cred)
struct generic_cred *gcred = container_of(cred, struct generic_cred, gc_base); struct generic_cred *gcred = container_of(cred, struct generic_cred, gc_base);
dprintk("RPC: generic_free_cred %p\n", gcred); dprintk("RPC: generic_free_cred %p\n", gcred);
if (gcred->acred.group_info != NULL)
put_group_info(gcred->acred.group_info);
put_cred(cred->cr_cred); put_cred(cred->cr_cred);
kfree(gcred); kfree(gcred);
} }
...@@ -173,6 +168,7 @@ generic_match(struct auth_cred *acred, struct rpc_cred *cred, int flags) ...@@ -173,6 +168,7 @@ generic_match(struct auth_cred *acred, struct rpc_cred *cred, int flags)
{ {
struct generic_cred *gcred = container_of(cred, struct generic_cred, gc_base); struct generic_cred *gcred = container_of(cred, struct generic_cred, gc_base);
int i; int i;
struct group_info *a, *g;
if (acred->machine_cred) if (acred->machine_cred)
return machine_cred_match(acred, gcred, flags); return machine_cred_match(acred, gcred, flags);
...@@ -182,16 +178,17 @@ generic_match(struct auth_cred *acred, struct rpc_cred *cred, int flags) ...@@ -182,16 +178,17 @@ generic_match(struct auth_cred *acred, struct rpc_cred *cred, int flags)
gcred->acred.machine_cred != 0) gcred->acred.machine_cred != 0)
goto out_nomatch; goto out_nomatch;
a = acred->cred->group_info;
g = gcred->acred.cred->group_info;
/* Optimisation in the case where pointers are identical... */ /* Optimisation in the case where pointers are identical... */
if (gcred->acred.group_info == acred->group_info) if (a == g)
goto out_match; goto out_match;
/* Slow path... */ /* Slow path... */
if (gcred->acred.group_info->ngroups != acred->group_info->ngroups) if (g->ngroups != a->ngroups)
goto out_nomatch; goto out_nomatch;
for (i = 0; i < gcred->acred.group_info->ngroups; i++) { for (i = 0; i < g->ngroups; i++) {
if (!gid_eq(gcred->acred.group_info->gid[i], if (!gid_eq(g->gid[i], a->gid[i]))
acred->group_info->gid[i]))
goto out_nomatch; goto out_nomatch;
} }
out_match: out_match:
......
...@@ -79,14 +79,14 @@ unx_create_cred(struct rpc_auth *auth, struct auth_cred *acred, int flags, gfp_t ...@@ -79,14 +79,14 @@ unx_create_cred(struct rpc_auth *auth, struct auth_cred *acred, int flags, gfp_t
rpcauth_init_cred(&cred->uc_base, acred, auth, &unix_credops); rpcauth_init_cred(&cred->uc_base, acred, auth, &unix_credops);
cred->uc_base.cr_flags = 1UL << RPCAUTH_CRED_UPTODATE; cred->uc_base.cr_flags = 1UL << RPCAUTH_CRED_UPTODATE;
if (acred->group_info != NULL) if (acred->cred && acred->cred->group_info != NULL)
groups = acred->group_info->ngroups; groups = acred->cred->group_info->ngroups;
if (groups > UNX_NGROUPS) if (groups > UNX_NGROUPS)
groups = UNX_NGROUPS; groups = UNX_NGROUPS;
cred->uc_gid = acred->gid; cred->uc_gid = acred->gid;
for (i = 0; i < groups; i++) for (i = 0; i < groups; i++)
cred->uc_gids[i] = acred->group_info->gid[i]; cred->uc_gids[i] = acred->cred->group_info->gid[i];
if (i < UNX_NGROUPS) if (i < UNX_NGROUPS)
cred->uc_gids[i] = INVALID_GID; cred->uc_gids[i] = INVALID_GID;
...@@ -130,12 +130,12 @@ unx_match(struct auth_cred *acred, struct rpc_cred *rcred, int flags) ...@@ -130,12 +130,12 @@ unx_match(struct auth_cred *acred, struct rpc_cred *rcred, int flags)
if (!uid_eq(cred->uc_uid, acred->uid) || !gid_eq(cred->uc_gid, acred->gid)) if (!uid_eq(cred->uc_uid, acred->uid) || !gid_eq(cred->uc_gid, acred->gid))
return 0; return 0;
if (acred->group_info != NULL) if (acred->cred && acred->cred->group_info != NULL)
groups = acred->group_info->ngroups; groups = acred->cred->group_info->ngroups;
if (groups > UNX_NGROUPS) if (groups > UNX_NGROUPS)
groups = UNX_NGROUPS; groups = UNX_NGROUPS;
for (i = 0; i < groups ; i++) for (i = 0; i < groups ; i++)
if (!gid_eq(cred->uc_gids[i], acred->group_info->gid[i])) if (!gid_eq(cred->uc_gids[i], acred->cred->group_info->gid[i]))
return 0; return 0;
if (groups < UNX_NGROUPS && gid_valid(cred->uc_gids[groups])) if (groups < UNX_NGROUPS && gid_valid(cred->uc_gids[groups]))
return 0; return 0;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment