SUNRPC: Remove broken gss_mech_list_pseudoflavors()
Remove gss_mech_list_pseudoflavors() and its callers. This is part of an unused API, and could leak an RCU reference if it were ever called. Signed-off-by: Trond Myklebust <trond.myklebust@hammerspace.com> Signed-off-by: Anna Schumaker <Anna.Schumaker@Netapp.com>
This commit is contained in:
parent
b8946d7bfb
commit
b32d285539
|
@ -113,7 +113,6 @@ struct rpc_authops {
|
||||||
int (*hash_cred)(struct auth_cred *, unsigned int);
|
int (*hash_cred)(struct auth_cred *, unsigned int);
|
||||||
struct rpc_cred * (*lookup_cred)(struct rpc_auth *, struct auth_cred *, int);
|
struct rpc_cred * (*lookup_cred)(struct rpc_auth *, struct auth_cred *, int);
|
||||||
struct rpc_cred * (*crcreate)(struct rpc_auth*, struct auth_cred *, int, gfp_t);
|
struct rpc_cred * (*crcreate)(struct rpc_auth*, struct auth_cred *, int, gfp_t);
|
||||||
int (*list_pseudoflavors)(rpc_authflavor_t *, int);
|
|
||||||
rpc_authflavor_t (*info2flavor)(struct rpcsec_gss_info *);
|
rpc_authflavor_t (*info2flavor)(struct rpcsec_gss_info *);
|
||||||
int (*flavor2info)(rpc_authflavor_t,
|
int (*flavor2info)(rpc_authflavor_t,
|
||||||
struct rpcsec_gss_info *);
|
struct rpcsec_gss_info *);
|
||||||
|
@ -158,7 +157,6 @@ rpc_authflavor_t rpcauth_get_pseudoflavor(rpc_authflavor_t,
|
||||||
struct rpcsec_gss_info *);
|
struct rpcsec_gss_info *);
|
||||||
int rpcauth_get_gssinfo(rpc_authflavor_t,
|
int rpcauth_get_gssinfo(rpc_authflavor_t,
|
||||||
struct rpcsec_gss_info *);
|
struct rpcsec_gss_info *);
|
||||||
int rpcauth_list_flavors(rpc_authflavor_t *, int);
|
|
||||||
struct rpc_cred * rpcauth_lookup_credcache(struct rpc_auth *, struct auth_cred *, int, gfp_t);
|
struct rpc_cred * rpcauth_lookup_credcache(struct rpc_auth *, struct auth_cred *, int, gfp_t);
|
||||||
void rpcauth_init_cred(struct rpc_cred *, const struct auth_cred *, struct rpc_auth *, const struct rpc_credops *);
|
void rpcauth_init_cred(struct rpc_cred *, const struct auth_cred *, struct rpc_auth *, const struct rpc_credops *);
|
||||||
struct rpc_cred * rpcauth_lookupcred(struct rpc_auth *, int);
|
struct rpc_cred * rpcauth_lookupcred(struct rpc_auth *, int);
|
||||||
|
|
|
@ -150,9 +150,6 @@ struct gss_api_mech *gss_mech_get_by_name(const char *);
|
||||||
/* Similar, but get by pseudoflavor. */
|
/* Similar, but get by pseudoflavor. */
|
||||||
struct gss_api_mech *gss_mech_get_by_pseudoflavor(u32);
|
struct gss_api_mech *gss_mech_get_by_pseudoflavor(u32);
|
||||||
|
|
||||||
/* Fill in an array with a list of supported pseudoflavors */
|
|
||||||
int gss_mech_list_pseudoflavors(rpc_authflavor_t *, int);
|
|
||||||
|
|
||||||
struct gss_api_mech * gss_mech_get(struct gss_api_mech *);
|
struct gss_api_mech * gss_mech_get(struct gss_api_mech *);
|
||||||
|
|
||||||
/* For every successful gss_mech_get or gss_mech_get_by_* call there must be a
|
/* For every successful gss_mech_get or gss_mech_get_by_* call there must be a
|
||||||
|
|
|
@ -221,55 +221,6 @@ rpcauth_get_gssinfo(rpc_authflavor_t pseudoflavor, struct rpcsec_gss_info *info)
|
||||||
}
|
}
|
||||||
EXPORT_SYMBOL_GPL(rpcauth_get_gssinfo);
|
EXPORT_SYMBOL_GPL(rpcauth_get_gssinfo);
|
||||||
|
|
||||||
/**
|
|
||||||
* rpcauth_list_flavors - discover registered flavors and pseudoflavors
|
|
||||||
* @array: array to fill in
|
|
||||||
* @size: size of "array"
|
|
||||||
*
|
|
||||||
* Returns the number of array items filled in, or a negative errno.
|
|
||||||
*
|
|
||||||
* The returned array is not sorted by any policy. Callers should not
|
|
||||||
* rely on the order of the items in the returned array.
|
|
||||||
*/
|
|
||||||
int
|
|
||||||
rpcauth_list_flavors(rpc_authflavor_t *array, int size)
|
|
||||||
{
|
|
||||||
const struct rpc_authops *ops;
|
|
||||||
rpc_authflavor_t flavor, pseudos[4];
|
|
||||||
int i, len, result = 0;
|
|
||||||
|
|
||||||
rcu_read_lock();
|
|
||||||
for (flavor = 0; flavor < RPC_AUTH_MAXFLAVOR; flavor++) {
|
|
||||||
ops = rcu_dereference(auth_flavors[flavor]);
|
|
||||||
if (result >= size) {
|
|
||||||
result = -ENOMEM;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (ops == NULL)
|
|
||||||
continue;
|
|
||||||
if (ops->list_pseudoflavors == NULL) {
|
|
||||||
array[result++] = ops->au_flavor;
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
len = ops->list_pseudoflavors(pseudos, ARRAY_SIZE(pseudos));
|
|
||||||
if (len < 0) {
|
|
||||||
result = len;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
for (i = 0; i < len; i++) {
|
|
||||||
if (result >= size) {
|
|
||||||
result = -ENOMEM;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
array[result++] = pseudos[i];
|
|
||||||
}
|
|
||||||
}
|
|
||||||
rcu_read_unlock();
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
EXPORT_SYMBOL_GPL(rpcauth_list_flavors);
|
|
||||||
|
|
||||||
struct rpc_auth *
|
struct rpc_auth *
|
||||||
rpcauth_create(const struct rpc_auth_create_args *args, struct rpc_clnt *clnt)
|
rpcauth_create(const struct rpc_auth_create_args *args, struct rpc_clnt *clnt)
|
||||||
{
|
{
|
||||||
|
|
|
@ -2118,7 +2118,6 @@ static const struct rpc_authops authgss_ops = {
|
||||||
.hash_cred = gss_hash_cred,
|
.hash_cred = gss_hash_cred,
|
||||||
.lookup_cred = gss_lookup_cred,
|
.lookup_cred = gss_lookup_cred,
|
||||||
.crcreate = gss_create_cred,
|
.crcreate = gss_create_cred,
|
||||||
.list_pseudoflavors = gss_mech_list_pseudoflavors,
|
|
||||||
.info2flavor = gss_mech_info2flavor,
|
.info2flavor = gss_mech_info2flavor,
|
||||||
.flavor2info = gss_mech_flavor2info,
|
.flavor2info = gss_mech_flavor2info,
|
||||||
};
|
};
|
||||||
|
|
|
@ -219,35 +219,6 @@ gss_mech_get_by_pseudoflavor(u32 pseudoflavor)
|
||||||
return gm;
|
return gm;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* gss_mech_list_pseudoflavors - Discover registered GSS pseudoflavors
|
|
||||||
* @array_ptr: array to fill in
|
|
||||||
* @size: size of "array"
|
|
||||||
*
|
|
||||||
* Returns the number of array items filled in, or a negative errno.
|
|
||||||
*
|
|
||||||
* The returned array is not sorted by any policy. Callers should not
|
|
||||||
* rely on the order of the items in the returned array.
|
|
||||||
*/
|
|
||||||
int gss_mech_list_pseudoflavors(rpc_authflavor_t *array_ptr, int size)
|
|
||||||
{
|
|
||||||
struct gss_api_mech *pos = NULL;
|
|
||||||
int j, i = 0;
|
|
||||||
|
|
||||||
rcu_read_lock();
|
|
||||||
list_for_each_entry_rcu(pos, ®istered_mechs, gm_list) {
|
|
||||||
for (j = 0; j < pos->gm_pf_num; j++) {
|
|
||||||
if (i >= size) {
|
|
||||||
spin_unlock(®istered_mechs_lock);
|
|
||||||
return -ENOMEM;
|
|
||||||
}
|
|
||||||
array_ptr[i++] = pos->gm_pfs[j].pseudoflavor;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
rcu_read_unlock();
|
|
||||||
return i;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* gss_svc_to_pseudoflavor - map a GSS service number to a pseudoflavor
|
* gss_svc_to_pseudoflavor - map a GSS service number to a pseudoflavor
|
||||||
* @gm: GSS mechanism handle
|
* @gm: GSS mechanism handle
|
||||||
|
|
Loading…
Reference in New Issue