Commit 35311d64 authored by Kirill Korotaev's avatar Kirill Korotaev Committed by Linus Torvalds

[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: default avatarKirill Korotaev <dev@sw.ru>
Signed-Off-By: default avatarMaxim Giryaev <gem@sw.ru>
Signed-off-by: default avatarChris Wright <chrisw@osdl.org>
Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
parent b95adac7
...@@ -24,17 +24,26 @@ ...@@ -24,17 +24,26 @@
static int tiocgdev(unsigned fd, unsigned cmd, unsigned int __user *ptr) static int tiocgdev(unsigned fd, unsigned cmd, unsigned int __user *ptr)
{ {
struct file *file = fget(fd); struct file *file;
struct tty_struct *real_tty; struct tty_struct *real_tty;
int fput_needed, ret;
file = fget_light(fd, &fput_needed);
if (!file) if (!file)
return -EBADF; return -EBADF;
ret = -EINVAL;
if (file->f_op->ioctl != tty_ioctl) if (file->f_op->ioctl != tty_ioctl)
return -EINVAL; goto out;
real_tty = (struct tty_struct *)file->private_data; real_tty = (struct tty_struct *)file->private_data;
if (!real_tty) if (!real_tty)
return -EINVAL; goto out;
return put_user(new_encode_dev(tty_devnum(real_tty)), ptr);
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 */ #define RTC_IRQP_READ32 _IOR('p', 0x0b, unsigned int) /* Read IRQ rate */
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment