diff options
author | Jan Blunck <jblunck@suse.de> | 2008-02-15 04:34:37 +0100 |
---|---|---|
committer | Linus Torvalds <torvalds@woody.linux-foundation.org> | 2008-02-15 06:13:33 +0100 |
commit | 09da5916baf6d3fb9ac16c125c801ae6ea151f97 (patch) | |
tree | 9cb3d90969fec6c24cb6505f59c097529dc62197 /fs | |
parent | Introduce path_put() (diff) | |
download | linux-09da5916baf6d3fb9ac16c125c801ae6ea151f97.tar.xz linux-09da5916baf6d3fb9ac16c125c801ae6ea151f97.zip |
Use path_put() in a few places instead of {mnt,d}put()
Use path_put() in a few places instead of {mnt,d}put()
Signed-off-by: Jan Blunck <jblunck@suse.de>
Signed-off-by: Andreas Gruenbacher <agruen@suse.de>
Acked-by: Christoph Hellwig <hch@lst.de>
Cc: Al Viro <viro@zeniv.linux.org.uk>
Acked-by: David Howells <dhowells@redhat.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'fs')
-rw-r--r-- | fs/afs/mntpt.c | 3 | ||||
-rw-r--r-- | fs/namei.c | 15 |
2 files changed, 6 insertions, 12 deletions
diff --git a/fs/afs/mntpt.c b/fs/afs/mntpt.c index e13cea220669..a3510b8ba3e7 100644 --- a/fs/afs/mntpt.c +++ b/fs/afs/mntpt.c @@ -235,8 +235,7 @@ static void *afs_mntpt_follow_link(struct dentry *dentry, struct nameidata *nd) err = do_add_mount(newmnt, nd, MNT_SHRINKABLE, &afs_vfsmounts); switch (err) { case 0: - dput(nd->path.dentry); - mntput(nd->path.mnt); + path_put(&nd->path); nd->path.mnt = newmnt; nd->path.dentry = dget(newmnt->mnt_root); schedule_delayed_work(&afs_mntpt_expiry_timer, diff --git a/fs/namei.c b/fs/namei.c index b0df7ea733d7..024993535b6f 100644 --- a/fs/namei.c +++ b/fs/namei.c @@ -625,8 +625,7 @@ static __always_inline int __do_follow_link(struct path *path, struct nameidata if (dentry->d_inode->i_op->put_link) dentry->d_inode->i_op->put_link(dentry, nd, cookie); } - dput(dentry); - mntput(path->mnt); + path_put(path); return error; } @@ -1033,8 +1032,7 @@ static int link_path_walk(const char *name, struct nameidata *nd) result = __link_path_walk(name, nd); } - dput(save.path.dentry); - mntput(save.path.mnt); + path_put(&save.path); return result; } @@ -1056,8 +1054,7 @@ static int __emul_lookup_dentry(const char *name, struct nameidata *nd) if (!nd->path.dentry->d_inode || S_ISDIR(nd->path.dentry->d_inode->i_mode)) { - struct dentry *old_dentry = nd->path.dentry; - struct vfsmount *old_mnt = nd->path.mnt; + struct path old_path = nd->path; struct qstr last = nd->last; int last_type = nd->last_type; struct fs_struct *fs = current->fs; @@ -1073,14 +1070,12 @@ static int __emul_lookup_dentry(const char *name, struct nameidata *nd) read_unlock(&fs->lock); if (path_walk(name, nd) == 0) { if (nd->path.dentry->d_inode) { - dput(old_dentry); - mntput(old_mnt); + path_put(&old_path); return 1; } path_put(&nd->path); } - nd->path.dentry = old_dentry; - nd->path.mnt = old_mnt; + nd->path = old_path; nd->last = last; nd->last_type = last_type; } |