summaryrefslogtreecommitdiffstats
path: root/fs/open.c
diff options
context:
space:
mode:
authorAl Viro <viro@zeniv.linux.org.uk>2012-08-27 02:22:10 +0200
committerAl Viro <viro@zeniv.linux.org.uk>2012-09-27 03:10:03 +0200
commitd6483b7a78438bc333560d11b69e6a6a6cf55940 (patch)
tree86111580d45c0d1cad04809c7f619b4d04107d1a /fs/open.c
parentswitch fallocate(2) to fget_light() (diff)
downloadlinux-d6483b7a78438bc333560d11b69e6a6a6cf55940.tar.xz
linux-d6483b7a78438bc333560d11b69e6a6a6cf55940.zip
switch fchmod(2) to fget_light()
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
Diffstat (limited to 'fs/open.c')
-rw-r--r--fs/open.c12
1 files changed, 5 insertions, 7 deletions
diff --git a/fs/open.c b/fs/open.c
index da6d3f1ac243..3c741eae6b99 100644
--- a/fs/open.c
+++ b/fs/open.c
@@ -582,23 +582,21 @@ SYSCALL_DEFINE3(lchown, const char __user *, filename, uid_t, user, gid_t, group
SYSCALL_DEFINE3(fchown, unsigned int, fd, uid_t, user, gid_t, group)
{
- struct file * file;
- int error = -EBADF;
- struct dentry * dentry;
+ struct file *file;
+ int error = -EBADF, fput_needed;
- file = fget(fd);
+ file = fget_light(fd, &fput_needed);
if (!file)
goto out;
error = mnt_want_write_file(file);
if (error)
goto out_fput;
- dentry = file->f_path.dentry;
- audit_inode(NULL, dentry);
+ audit_inode(NULL, file->f_path.dentry);
error = chown_common(&file->f_path, user, group);
mnt_drop_write_file(file);
out_fput:
- fput(file);
+ fput_light(file, fput_needed);
out:
return error;
}