/* * Please call rpc_shutdown_client() when you are done with this client. */ struct rpc_clnt *nfs4_create_sec_client(struct rpc_clnt *clnt, struct inode *inode, struct qstr *name) { rpc_authflavor_t flavor; flavor = nfs4_negotiate_security(inode, name); if ((int)flavor < 0) return ERR_PTR((int)flavor); return rpc_clone_client_set_auth(clnt, flavor); }
/* * Please call rpc_shutdown_client() when you are done with this client. */ struct rpc_clnt *nfs4_create_sec_client(struct rpc_clnt *clnt, struct inode *inode, struct qstr *name) { struct rpc_clnt *clone; struct rpc_auth *auth; rpc_authflavor_t flavor; flavor = nfs4_negotiate_security(inode, name); if (flavor < 0) return ERR_PTR(flavor); clone = rpc_clone_client(clnt); if (IS_ERR(clone)) return clone; auth = rpcauth_create(flavor, clone); if (!auth) { rpc_shutdown_client(clone); clone = ERR_PTR(-EIO); } return clone; }