diff options
author | Al Viro <viro@zeniv.linux.org.uk> | 2012-08-28 12:52:22 -0400 |
---|---|---|
committer | Al Viro <viro@zeniv.linux.org.uk> | 2012-09-26 22:20:08 -0400 |
commit | 2903ff019b346ab8d36ebbf54853c3aaf6590608 (patch) | |
tree | 962d94054765bb37bc00e977c3036e65c5fd91fe /fs/fhandle.c | |
parent | a5b470ba06aa3f96999ede5feba178df6bdb134a (diff) |
switch simple cases of fget_light to fdget
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
Diffstat (limited to 'fs/fhandle.c')
-rw-r--r-- | fs/fhandle.c | 17 |
1 files changed, 7 insertions, 10 deletions
diff --git a/fs/fhandle.c b/fs/fhandle.c index a48e4a139be1..f775bfdd6e4a 100644 --- a/fs/fhandle.c +++ b/fs/fhandle.c | |||
@@ -113,24 +113,21 @@ SYSCALL_DEFINE5(name_to_handle_at, int, dfd, const char __user *, name, | |||
113 | 113 | ||
114 | static struct vfsmount *get_vfsmount_from_fd(int fd) | 114 | static struct vfsmount *get_vfsmount_from_fd(int fd) |
115 | { | 115 | { |
116 | struct path path; | 116 | struct vfsmount *mnt; |
117 | 117 | ||
118 | if (fd == AT_FDCWD) { | 118 | if (fd == AT_FDCWD) { |
119 | struct fs_struct *fs = current->fs; | 119 | struct fs_struct *fs = current->fs; |
120 | spin_lock(&fs->lock); | 120 | spin_lock(&fs->lock); |
121 | path = fs->pwd; | 121 | mnt = mntget(fs->pwd.mnt); |
122 | mntget(path.mnt); | ||
123 | spin_unlock(&fs->lock); | 122 | spin_unlock(&fs->lock); |
124 | } else { | 123 | } else { |
125 | int fput_needed; | 124 | struct fd f = fdget(fd); |
126 | struct file *file = fget_light(fd, &fput_needed); | 125 | if (!f.file) |
127 | if (!file) | ||
128 | return ERR_PTR(-EBADF); | 126 | return ERR_PTR(-EBADF); |
129 | path = file->f_path; | 127 | mnt = mntget(f.file->f_path.mnt); |
130 | mntget(path.mnt); | 128 | fdput(f); |
131 | fput_light(file, fput_needed); | ||
132 | } | 129 | } |
133 | return path.mnt; | 130 | return mnt; |
134 | } | 131 | } |
135 | 132 | ||
136 | static int vfs_dentry_acceptable(void *context, struct dentry *dentry) | 133 | static int vfs_dentry_acceptable(void *context, struct dentry *dentry) |