Loading include/linux/sunrpc/rpc_pipe_fs.h +1 −1 Original line number Diff line number Diff line Loading @@ -42,7 +42,7 @@ RPC_I(struct inode *inode) extern int rpc_queue_upcall(struct inode *, struct rpc_pipe_msg *); extern struct dentry *rpc_mkdir(char *, struct rpc_clnt *); extern int rpc_rmdir(char *); extern int rpc_rmdir(struct dentry *); extern struct dentry *rpc_mkpipe(char *, void *, struct rpc_pipe_ops *, int flags); extern int rpc_unlink(struct dentry *); extern struct vfsmount *rpc_get_mount(void); Loading net/sunrpc/clnt.c +3 −3 Original line number Diff line number Diff line Loading @@ -183,7 +183,7 @@ rpc_new_client(struct rpc_xprt *xprt, char *servname, out_no_auth: if (!IS_ERR(clnt->cl_dentry)) { rpc_rmdir(clnt->cl_pathname); rpc_rmdir(clnt->cl_dentry); dput(clnt->cl_dentry); rpc_put_mount(); } Loading Loading @@ -320,8 +320,8 @@ rpc_destroy_client(struct rpc_clnt *clnt) rpc_destroy_client(clnt->cl_parent); goto out_free; } if (clnt->cl_pathname[0]) rpc_rmdir(clnt->cl_pathname); if (!IS_ERR(clnt->cl_dentry)) rpc_rmdir(clnt->cl_dentry); if (clnt->cl_xprt) { xprt_destroy(clnt->cl_xprt); clnt->cl_xprt = NULL; Loading net/sunrpc/rpc_pipe.c +5 −13 Original line number Diff line number Diff line Loading @@ -684,28 +684,20 @@ rpc_mkdir(char *path, struct rpc_clnt *rpc_client) } int rpc_rmdir(char *path) rpc_rmdir(struct dentry *dentry) { struct nameidata nd; struct dentry *dentry; struct dentry *parent; struct inode *dir; int error; if ((error = rpc_lookup_parent(path, &nd)) != 0) return error; dir = nd.dentry->d_inode; parent = dget_parent(dentry); dir = parent->d_inode; mutex_lock_nested(&dir->i_mutex, I_MUTEX_PARENT); dentry = lookup_one_len(nd.last.name, nd.dentry, nd.last.len); if (IS_ERR(dentry)) { error = PTR_ERR(dentry); goto out_release; } rpc_depopulate(dentry); error = __rpc_rmdir(dir, dentry); dput(dentry); out_release: mutex_unlock(&dir->i_mutex); rpc_release_path(&nd); dput(parent); return error; } Loading Loading
include/linux/sunrpc/rpc_pipe_fs.h +1 −1 Original line number Diff line number Diff line Loading @@ -42,7 +42,7 @@ RPC_I(struct inode *inode) extern int rpc_queue_upcall(struct inode *, struct rpc_pipe_msg *); extern struct dentry *rpc_mkdir(char *, struct rpc_clnt *); extern int rpc_rmdir(char *); extern int rpc_rmdir(struct dentry *); extern struct dentry *rpc_mkpipe(char *, void *, struct rpc_pipe_ops *, int flags); extern int rpc_unlink(struct dentry *); extern struct vfsmount *rpc_get_mount(void); Loading
net/sunrpc/clnt.c +3 −3 Original line number Diff line number Diff line Loading @@ -183,7 +183,7 @@ rpc_new_client(struct rpc_xprt *xprt, char *servname, out_no_auth: if (!IS_ERR(clnt->cl_dentry)) { rpc_rmdir(clnt->cl_pathname); rpc_rmdir(clnt->cl_dentry); dput(clnt->cl_dentry); rpc_put_mount(); } Loading Loading @@ -320,8 +320,8 @@ rpc_destroy_client(struct rpc_clnt *clnt) rpc_destroy_client(clnt->cl_parent); goto out_free; } if (clnt->cl_pathname[0]) rpc_rmdir(clnt->cl_pathname); if (!IS_ERR(clnt->cl_dentry)) rpc_rmdir(clnt->cl_dentry); if (clnt->cl_xprt) { xprt_destroy(clnt->cl_xprt); clnt->cl_xprt = NULL; Loading
net/sunrpc/rpc_pipe.c +5 −13 Original line number Diff line number Diff line Loading @@ -684,28 +684,20 @@ rpc_mkdir(char *path, struct rpc_clnt *rpc_client) } int rpc_rmdir(char *path) rpc_rmdir(struct dentry *dentry) { struct nameidata nd; struct dentry *dentry; struct dentry *parent; struct inode *dir; int error; if ((error = rpc_lookup_parent(path, &nd)) != 0) return error; dir = nd.dentry->d_inode; parent = dget_parent(dentry); dir = parent->d_inode; mutex_lock_nested(&dir->i_mutex, I_MUTEX_PARENT); dentry = lookup_one_len(nd.last.name, nd.dentry, nd.last.len); if (IS_ERR(dentry)) { error = PTR_ERR(dentry); goto out_release; } rpc_depopulate(dentry); error = __rpc_rmdir(dir, dentry); dput(dentry); out_release: mutex_unlock(&dir->i_mutex); rpc_release_path(&nd); dput(parent); return error; } Loading