From: Gerd Hoffmann <[email protected]>

Signed-off-by: Gerd Hoffmann <[email protected]>
Cc: Arnd Bergmann <[email protected]>
Cc: Al Viro <[email protected]>
Cc: <[email protected]>
Cc: <[email protected]>
Cc: Ralf Baechle <[email protected]>
Signed-off-by: Andrew Morton <[email protected]>
---

 fs/compat.c |   20 ++++++++++++--------
 1 file changed, 12 insertions(+), 8 deletions(-)

diff -puN 
fs/compat.c~preadv-pwritev-switch-compat-readv-preadv-writev-pwritev-from-fget-to-fget_light
 fs/compat.c
--- 
a/fs/compat.c~preadv-pwritev-switch-compat-readv-preadv-writev-pwritev-from-fget-to-fget_light
+++ a/fs/compat.c
@@ -1222,13 +1222,14 @@ compat_sys_readv(unsigned long fd, const
                 unsigned long vlen)
 {
        struct file *file;
+       int fput_needed;
        ssize_t ret;
 
-       file = fget(fd);
+       file = fget_light(fd, &fput_needed);
        if (!file)
                return -EBADF;
        ret = compat_readv(file, vec, vlen, &file->f_pos);
-       fput(file);
+       fput_light(file, fput_needed);
        return ret;
 }
 
@@ -1238,15 +1239,16 @@ compat_sys_preadv(unsigned long fd, cons
 {
        loff_t pos = ((loff_t)pos_high << 32) | pos_low;
        struct file *file;
+       int fput_needed;
        ssize_t ret;
 
        if (pos < 0)
                return -EINVAL;
-       file = fget(fd);
+       file = fget_light(fd, &fput_needed);
        if (!file)
                return -EBADF;
        ret = compat_readv(file, vec, vlen, &pos);
-       fput(file);
+       fput_light(file, fput_needed);
        return ret;
 }
 
@@ -1277,13 +1279,14 @@ compat_sys_writev(unsigned long fd, cons
                  unsigned long vlen)
 {
        struct file *file;
+       int fput_needed;
        ssize_t ret;
 
-       file = fget(fd);
+       file = fget_light(fd, &fput_needed);
        if (!file)
                return -EBADF;
        ret = compat_writev(file, vec, vlen, &file->f_pos);
-       fput(file);
+       fput_light(file, fput_needed);
        return ret;
 }
 
@@ -1293,15 +1296,16 @@ compat_sys_pwritev(unsigned long fd, con
 {
        loff_t pos = ((loff_t)pos_high << 32) | pos_low;
        struct file *file;
+       int fput_needed;
        ssize_t ret;
 
        if (pos < 0)
                return -EINVAL;
-       file = fget(fd);
+       file = fget_light(fd, &fput_needed);
        if (!file)
                return -EBADF;
        ret = compat_writev(file, vec, vlen, &pos);
-       fput(file);
+       fput_light(file, fput_needed);
        return ret;
 }
 
_
--
To unsubscribe from this list: send the line "unsubscribe linux-api" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to