switch readahead(2) to fget_light()
Al Viro [Mon, 27 Aug 2012 00:30:57 +0000 (20:30 -0400)]
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>

mm/readahead.c

index ea8f8fa..1011111 100644 (file)
@@ -580,9 +580,10 @@ SYSCALL_DEFINE(readahead)(int fd, loff_t offset, size_t count)
 {
        ssize_t ret;
        struct file *file;
+       int fput_needed;
 
        ret = -EBADF;
-       file = fget(fd);
+       file = fget_light(fd, &fput_needed);
        if (file) {
                if (file->f_mode & FMODE_READ) {
                        struct address_space *mapping = file->f_mapping;
@@ -591,7 +592,7 @@ SYSCALL_DEFINE(readahead)(int fd, loff_t offset, size_t count)
                        unsigned long len = end - start + 1;
                        ret = do_readahead(mapping, file, start, len);
                }
-               fput(file);
+               fput_light(file, fput_needed);
        }
        return ret;
 }