Commit f344f6df authored by Olaf Kirch's avatar Olaf Kirch Committed by Trond Myklebust

SUNRPC: Auto-load RPC authentication kernel modules

This patch adds a request_module call to rpcauth_create which will try
to auto-load the kernel module for the requested authentication flavor.
For kernels with modular sunrpc, this reduces the admin overhead for
the user.
Signed-off-by: default avatarOlaf Kirch <okir@suse.de>
Signed-off-by: default avatarTrond Myklebust <Trond.Myklebust@netapp.com>
parent fb374d24
...@@ -64,14 +64,26 @@ rpcauth_create(rpc_authflavor_t pseudoflavor, struct rpc_clnt *clnt) ...@@ -64,14 +64,26 @@ rpcauth_create(rpc_authflavor_t pseudoflavor, struct rpc_clnt *clnt)
struct rpc_authops *ops; struct rpc_authops *ops;
u32 flavor = pseudoflavor_to_flavor(pseudoflavor); u32 flavor = pseudoflavor_to_flavor(pseudoflavor);
if (flavor >= RPC_AUTH_MAXFLAVOR || !(ops = auth_flavors[flavor])) auth = ERR_PTR(-EINVAL);
return ERR_PTR(-EINVAL); if (flavor >= RPC_AUTH_MAXFLAVOR)
goto out;
/* FIXME - auth_flavors[] really needs an rw lock,
* and module refcounting. */
#ifdef CONFIG_KMOD
if ((ops = auth_flavors[flavor]) == NULL)
request_module("rpc-auth-%u", flavor);
#endif
if ((ops = auth_flavors[flavor]) == NULL)
goto out;
auth = ops->create(clnt, pseudoflavor); auth = ops->create(clnt, pseudoflavor);
if (IS_ERR(auth)) if (IS_ERR(auth))
return auth; return auth;
if (clnt->cl_auth) if (clnt->cl_auth)
rpcauth_destroy(clnt->cl_auth); rpcauth_destroy(clnt->cl_auth);
clnt->cl_auth = auth; clnt->cl_auth = auth;
out:
return auth; return auth;
} }
......
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