Loading fs/nfs/namespace.c +0 −62 Original line number Diff line number Diff line Loading @@ -148,59 +148,6 @@ rpc_authflavor_t nfs_find_best_sec(struct nfs4_secinfo_flavors *flavors) return pseudoflavor; } static int nfs_negotiate_security(const struct dentry *parent, const struct dentry *dentry, rpc_authflavor_t *flavor) { struct page *page; struct nfs4_secinfo_flavors *flavors; int (*secinfo)(struct inode *, const struct qstr *, struct nfs4_secinfo_flavors *); int ret = -EPERM; secinfo = NFS_PROTO(parent->d_inode)->secinfo; if (secinfo != NULL) { page = alloc_page(GFP_KERNEL); if (!page) { ret = -ENOMEM; goto out; } flavors = page_address(page); ret = secinfo(parent->d_inode, &dentry->d_name, flavors); *flavor = nfs_find_best_sec(flavors); put_page(page); } out: return ret; } static int nfs_lookup_with_sec(struct nfs_server *server, struct dentry *parent, struct dentry *dentry, struct path *path, struct nfs_fh *fh, struct nfs_fattr *fattr, rpc_authflavor_t *flavor) { struct rpc_clnt *clone; struct rpc_auth *auth; int err; err = nfs_negotiate_security(parent, path->dentry, flavor); if (err < 0) goto out; clone = rpc_clone_client(server->client); auth = rpcauth_create(*flavor, clone); if (!auth) { err = -EIO; goto out_shutdown; } err = server->nfs_client->rpc_ops->lookup(clone, parent->d_inode, &path->dentry->d_name, fh, fattr); out_shutdown: rpc_shutdown_client(clone); out: return err; } static struct rpc_clnt *nfs_lookup_mountpoint(struct inode *dir, struct qstr *name, struct nfs_fh *fh, Loading @@ -217,15 +164,6 @@ static struct rpc_clnt *nfs_lookup_mountpoint(struct inode *dir, return rpc_clone_client(NFS_SERVER(dir)->client); } #else /* CONFIG_NFS_V4 */ static inline int nfs_lookup_with_sec(struct nfs_server *server, struct dentry *parent, struct dentry *dentry, struct path *path, struct nfs_fh *fh, struct nfs_fattr *fattr, rpc_authflavor_t *flavor) { return -EPERM; } static inline struct rpc_clnt *nfs_lookup_mountpoint(struct inode *dir, struct qstr *name, struct nfs_fh *fh, Loading Loading
fs/nfs/namespace.c +0 −62 Original line number Diff line number Diff line Loading @@ -148,59 +148,6 @@ rpc_authflavor_t nfs_find_best_sec(struct nfs4_secinfo_flavors *flavors) return pseudoflavor; } static int nfs_negotiate_security(const struct dentry *parent, const struct dentry *dentry, rpc_authflavor_t *flavor) { struct page *page; struct nfs4_secinfo_flavors *flavors; int (*secinfo)(struct inode *, const struct qstr *, struct nfs4_secinfo_flavors *); int ret = -EPERM; secinfo = NFS_PROTO(parent->d_inode)->secinfo; if (secinfo != NULL) { page = alloc_page(GFP_KERNEL); if (!page) { ret = -ENOMEM; goto out; } flavors = page_address(page); ret = secinfo(parent->d_inode, &dentry->d_name, flavors); *flavor = nfs_find_best_sec(flavors); put_page(page); } out: return ret; } static int nfs_lookup_with_sec(struct nfs_server *server, struct dentry *parent, struct dentry *dentry, struct path *path, struct nfs_fh *fh, struct nfs_fattr *fattr, rpc_authflavor_t *flavor) { struct rpc_clnt *clone; struct rpc_auth *auth; int err; err = nfs_negotiate_security(parent, path->dentry, flavor); if (err < 0) goto out; clone = rpc_clone_client(server->client); auth = rpcauth_create(*flavor, clone); if (!auth) { err = -EIO; goto out_shutdown; } err = server->nfs_client->rpc_ops->lookup(clone, parent->d_inode, &path->dentry->d_name, fh, fattr); out_shutdown: rpc_shutdown_client(clone); out: return err; } static struct rpc_clnt *nfs_lookup_mountpoint(struct inode *dir, struct qstr *name, struct nfs_fh *fh, Loading @@ -217,15 +164,6 @@ static struct rpc_clnt *nfs_lookup_mountpoint(struct inode *dir, return rpc_clone_client(NFS_SERVER(dir)->client); } #else /* CONFIG_NFS_V4 */ static inline int nfs_lookup_with_sec(struct nfs_server *server, struct dentry *parent, struct dentry *dentry, struct path *path, struct nfs_fh *fh, struct nfs_fattr *fattr, rpc_authflavor_t *flavor) { return -EPERM; } static inline struct rpc_clnt *nfs_lookup_mountpoint(struct inode *dir, struct qstr *name, struct nfs_fh *fh, Loading