[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>
This commit is contained in:
committed by
Linus Torvalds
parent
b95adac775
commit
35311d6478
@@ -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 */
|
||||||
|
Reference in New Issue
Block a user