VFS: make vfs_fstat() use f[get|put]_light()
authorLinus Torvalds <torvalds@linux-foundation.org>
Sat, 28 Apr 2012 21:55:17 +0000 (14:55 -0700)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Sat, 7 Jun 2014 23:02:04 +0000 (16:02 -0700)
commit e994defb7b6813ba6fa7a2a36e86d2455ad1dc35 upstream.

Use the *_light() versions that properly avoid doing the file user count
updates when they are unnecessary.

Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
[xr: Backported to 3.4: adjust function name]
Signed-off-by: Rui Xiang <rui.xiang@huawei.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
fs/stat.c

index dc6d0be..88b36c7 100644 (file)
--- a/fs/stat.c
+++ b/fs/stat.c
@@ -57,12 +57,13 @@ EXPORT_SYMBOL(vfs_getattr);
 
 int vfs_fstat(unsigned int fd, struct kstat *stat)
 {
-       struct file *f = fget_raw(fd);
+       int fput_needed;
+       struct file *f = fget_light(fd, &fput_needed);
        int error = -EBADF;
 
        if (f) {
                error = vfs_getattr(f->f_path.mnt, f->f_path.dentry, stat);
-               fput(f);
+               fput_light(f, fput_needed);
        }
        return error;
 }