tree 2bad647ab30da08786e05f988787d92815dec06e
parent b95adac775aad29f79ffbbaf5db0e4d8d57f2714
author Kirill Korotaev <[EMAIL PROTECTED]> Sat, 10 Sep 2005 03:05:53 -0700
committer Linus Torvalds <[EMAIL PROTECTED]> Sat, 10 Sep 2005 04:19:43 -0700

[PATCH] lost fput in 32bit ioctl on x86-64

This adds a lost fput in 32bit tiocgdev ioctl on x86-64

[ chrisw: Updated to use fget_light/fput_light ]

Signed-Off-By: Kirill Korotaev <[EMAIL PROTECTED]>
Signed-Off-By: Maxim Giryaev <[EMAIL PROTECTED]>
Signed-off-by: Chris Wright <[EMAIL PROTECTED]>
Signed-off-by: Linus Torvalds <[EMAIL PROTECTED]>

 arch/x86_64/ia32/ia32_ioctl.c |   17 +++++++++++++----
 1 files changed, 13 insertions(+), 4 deletions(-)

diff --git a/arch/x86_64/ia32/ia32_ioctl.c b/arch/x86_64/ia32/ia32_ioctl.c
--- a/arch/x86_64/ia32/ia32_ioctl.c
+++ b/arch/x86_64/ia32/ia32_ioctl.c
@@ -24,17 +24,26 @@
 static int tiocgdev(unsigned fd, unsigned cmd,  unsigned int __user *ptr) 
 { 
 
-       struct file *file = fget(fd);
+       struct file *file;
        struct tty_struct *real_tty;
+       int fput_needed, ret;
 
+       file = fget_light(fd, &fput_needed);
        if (!file)
                return -EBADF;
+
+       ret = -EINVAL;
        if (file->f_op->ioctl != tty_ioctl)
-               return -EINVAL; 
+               goto out;
        real_tty = (struct tty_struct *)file->private_data;
        if (!real_tty)  
-               return -EINVAL; 
-       return put_user(new_encode_dev(tty_devnum(real_tty)), ptr); 
+               goto out;
+
+       ret = put_user(new_encode_dev(tty_devnum(real_tty)), ptr); 
+
+out:
+       fput_light(file, fput_needed);
+       return ret;
 } 
 
 #define RTC_IRQP_READ32        _IOR('p', 0x0b, unsigned int)    /* Read IRQ 
rate   */
-
To unsubscribe from this list: send the line "unsubscribe git-commits-head" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to