[PATCH] lost fput in 32bit ioctl on x86-64
[Posted October 18, 2005 by corbet]
| From: |
| Linux Kernel Mailing List <linux-kernel-AT-vger.kernel.org> |
| To: |
| git-commits-head-AT-vger.kernel.org |
| Subject: |
| [PATCH] lost fput in 32bit ioctl on x86-64 |
| Date: |
| Fri, 9 Sep 2005 15:11:24 -0700 |
tree 2bad647ab30da08786e05f988787d92815dec06e
parent b95adac775aad29f79ffbbaf5db0e4d8d57f2714
author Kirill Korotaev <dev@sw.ru> Sat, 10 Sep 2005 03:05:53 -0700
committer Linus Torvalds <torvalds@g5.osdl.org> 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 <dev@sw.ru>
Signed-Off-By: Maxim Giryaev <gem@sw.ru>
Signed-off-by: Chris Wright <chrisw@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
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 */