From: Chris Wright <chrisw@osdl.org>
To: linux-kernel@vger.kernel.org, stable@kernel.org,
Kirill Korotaev <dev@sw.ru>
Cc: Justin Forbes <jmforbes@linuxtx.org>,
Zwane Mwaikambo <zwane@arm.linux.org.uk>,
"Theodore Ts'o" <tytso@mit.edu>,
Randy Dunlap <rdunlap@xenotime.net>,
Chuck Wolber <chuckw@quantumlinux.com>,
torvalds@osdl.org, akpm@osdl.org, alan@lxorguk.ukuu.org.uk,
Chris Wright <chrisw@osdl.org>, Maxim Giryaev <gem@sw.ru>
Subject: [PATCH 01/11] [PATCH] lost fput in 32bit ioctl on x86-64
Date: Wed, 14 Sep 2005 18:03:44 -0700 [thread overview]
Message-ID: <20050915010400.221519000@localhost.localdomain> (raw)
In-Reply-To: 20050915010343.577985000@localhost.localdomain
[-- Attachment #1: lost-fput-in-32bit-ioctl-on-x86-64.patch --]
[-- Type: text/plain, Size: 1873 bytes --]
-stable review patch. If anyone has any objections, please let us know.
------------------
This patch adds lost fput in 32bit tiocgdev ioctl on x86-64
I believe this is a security issues, since user can fget() file as
many times as he wants to. So file refcounter can be overlapped and
first fput() will free resources though there will be still structures
pointing to the file, mnt, dentry etc. Also fput() sets f_dentry and
f_vfsmnt to NULL, so other file users will OOPS.
The oops can be done under files_lock and others, so this is really
exploitable DoS on SMP. Didn't checked it on practice actually.
(chrisw: Update 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>
---
arch/x86_64/ia32/ia32_ioctl.c | 17 +++++++++++++----
1 files changed, 13 insertions(+), 4 deletions(-)
Index: linux-2.6.13.y/arch/x86_64/ia32/ia32_ioctl.c
===================================================================
--- linux-2.6.13.y.orig/arch/x86_64/ia32/ia32_ioctl.c
+++ linux-2.6.13.y/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 */
--
next prev parent reply other threads:[~2005-09-15 1:05 UTC|newest]
Thread overview: 20+ messages / expand[flat|nested] mbox.gz Atom feed top
2005-09-15 1:03 [PATCH 00/11] -stable review Chris Wright
2005-09-15 1:03 ` Chris Wright [this message]
2005-09-15 1:03 ` [PATCH 02/11] [PATCH] Lost sockfd_put() in routing_ioctl() Chris Wright
2005-09-15 1:03 ` [PATCH 03/11] [PATCH] forcedeth: Initialize link settings in every nv_open() Chris Wright
2005-09-15 1:03 ` [PATCH 04/11] hpt366: write the full 4 bytes of ROM address, not just low 1 byte Chris Wright
2005-09-15 2:18 ` David Lang
2005-09-15 2:26 ` Andrew Morton
2005-09-15 2:29 ` [PATCH 04/11] hpt366: write the full 4 bytes of ROM address,not " David Lang
2005-09-15 6:11 ` [PATCH 04/11] hpt366: write the full 4 bytes of ROM address, not " Chris Wright
2005-09-15 10:39 ` David Lang
2005-09-15 10:28 ` Martin Mares
2005-09-15 1:03 ` [PATCH 05/11] Sun GEM ethernet: enable and map PCI ROM properly Chris Wright
2005-09-15 1:03 ` [PATCH 06/11] [stable] [ROM 3/3] Sun HME: " Chris Wright
2005-09-15 1:03 ` [PATCH 07/11] [NETFILTER]: Fix DHCP + MASQUERADE problem Chris Wright
2005-09-15 1:03 ` [PATCH 08/11] jfs: jfs_delete_inode must call clear_inode Chris Wright
2005-09-15 1:03 ` [PATCH 09/11] [PATCH] Fix MPOL_F_VERIFY Chris Wright
2005-09-15 1:03 ` [PATCH 10/11] Fix up more strange byte writes to the PCI_ROM_ADDRESS config word Chris Wright
2005-09-15 1:03 ` [PATCH 11/11] USB: ftdi_sio: custom baud rate fix Chris Wright
2005-09-15 7:36 ` [PATCH 00/11] -stable review Alexander Nyberg
2005-09-15 20:04 ` Chris Wright
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20050915010400.221519000@localhost.localdomain \
--to=chrisw@osdl.org \
--cc=akpm@osdl.org \
--cc=alan@lxorguk.ukuu.org.uk \
--cc=chuckw@quantumlinux.com \
--cc=dev@sw.ru \
--cc=gem@sw.ru \
--cc=jmforbes@linuxtx.org \
--cc=linux-kernel@vger.kernel.org \
--cc=rdunlap@xenotime.net \
--cc=stable@kernel.org \
--cc=torvalds@osdl.org \
--cc=tytso@mit.edu \
--cc=zwane@arm.linux.org.uk \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.