Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

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

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
Loading
Loading
Loading
Loading
+14 −2
Original line number Diff line number Diff line
@@ -64,14 +64,26 @@ rpcauth_create(rpc_authflavor_t pseudoflavor, struct rpc_clnt *clnt)
	struct rpc_authops	*ops;
	u32			flavor = pseudoflavor_to_flavor(pseudoflavor);

	if (flavor >= RPC_AUTH_MAXFLAVOR || !(ops = auth_flavors[flavor]))
		return ERR_PTR(-EINVAL);
	auth = 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);
	if (IS_ERR(auth))
		return auth;
	if (clnt->cl_auth)
		rpcauth_destroy(clnt->cl_auth);
	clnt->cl_auth = auth;

out:
	return auth;
}