From: Thomas Gleixner <tglx@linutronix.de>
To: Andrew Morton <akpm@osdl.org>
Cc: LKML <linux-kernel@vger.kernel.org>, Ingo Molnar <mingo@elte.hu>,
Tom Rini <trini@kernel.crashing.org>
Subject: [patch 1/2] Validate itimer timeval from userspace
Date: Sat, 18 Mar 2006 15:18:25 -0000 [thread overview]
Message-ID: <20060318142830.607556000@localhost.localdomain> (raw)
In-Reply-To: 20060318142827.419018000@localhost.localdomain
[-- Attachment #1: itimer-validate-uservalue.patch --]
[-- Type: text/plain, Size: 1713 bytes --]
According to the specification the timeval must be validated and
an errorcode -EINVAL returned in case the timeval is not in canonical
form. Before the hrtimer merge this was silently ignored by the
timeval to jiffies conversion. The validation is done inside
do_setitimer so all callers are catched.
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
include/linux/time.h | 6 ++++++
kernel/itimer.c | 8 ++++++++
2 files changed, 14 insertions(+)
Index: linux-2.6.16-rc6-updates/include/linux/time.h
===================================================================
--- linux-2.6.16-rc6-updates.orig/include/linux/time.h
+++ linux-2.6.16-rc6-updates/include/linux/time.h
@@ -73,6 +73,12 @@ extern void set_normalized_timespec(stru
#define timespec_valid(ts) \
(((ts)->tv_sec >= 0) && (((unsigned long) (ts)->tv_nsec) < NSEC_PER_SEC))
+/*
+ * Returns true if the timeval is in canonical form
+ */
+#define timeval_valid(t) \
+ (((t)->tv_sec >= 0) && (((unsigned long) (t)->tv_usec) < USEC_PER_SEC))
+
extern struct timespec xtime;
extern struct timespec wall_to_monotonic;
extern seqlock_t xtime_lock;
Index: linux-2.6.16-rc6-updates/kernel/itimer.c
===================================================================
--- linux-2.6.16-rc6-updates.orig/kernel/itimer.c
+++ linux-2.6.16-rc6-updates/kernel/itimer.c
@@ -150,6 +150,14 @@ int do_setitimer(int which, struct itime
ktime_t expires;
cputime_t cval, cinterval, nval, ninterval;
+ /*
+ * Validate the timeval. This catches all users of
+ * do_setitimer.
+ */
+ if (!timeval_valid(&value->it_value) ||
+ !timeval_valid(&value->it_interval))
+ return -EINVAL;
+
switch (which) {
case ITIMER_REAL:
again:
--
next prev parent reply other threads:[~2006-03-18 15:18 UTC|newest]
Thread overview: 28+ messages / expand[flat|nested] mbox.gz Atom feed top
2006-03-18 15:18 [patch 0/2] sys_setitimer and sys_alarm hotfixes Thomas Gleixner
2006-03-18 15:18 ` Thomas Gleixner [this message]
2006-03-18 19:10 ` [patch 1/2] Validate itimer timeval from userspace Ingo Molnar
2006-03-18 19:57 ` Thomas Gleixner
2006-03-18 20:07 ` Andrew Morton
2006-03-18 20:16 ` Thomas Gleixner
2006-03-18 20:31 ` Andrew Morton
2006-03-18 20:38 ` Thomas Gleixner
2006-03-18 21:09 ` Andrew Morton
2006-03-18 21:26 ` Jesper Juhl
2006-03-18 21:33 ` Andrew Morton
2006-03-18 21:50 ` Jesper Juhl
2006-03-18 22:05 ` Thomas Gleixner
2006-03-18 22:25 ` Andrew Morton
2006-03-18 23:12 ` tglx
2006-03-18 20:45 ` Jesper Juhl
2006-03-18 22:02 ` Ray Lee
2006-03-18 23:14 ` Eric Piel
2006-03-19 8:55 ` Kyle Moffett
2006-03-18 20:23 ` Jesper Juhl
2006-03-18 20:30 ` Thomas Gleixner
2006-03-18 21:04 ` Andrew Morton
2006-03-21 15:31 ` Pavel Machek
2006-03-18 15:18 ` [patch 2/2] alarm unsigned signed conversion fixup Thomas Gleixner
2006-03-18 20:02 ` Thomas Gleixner
2006-03-18 20:12 ` Andrew Morton
2006-03-18 20:27 ` Thomas Gleixner
2006-03-18 21:06 ` Andrew Morton
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=20060318142830.607556000@localhost.localdomain \
--to=tglx@linutronix.de \
--cc=akpm@osdl.org \
--cc=linux-kernel@vger.kernel.org \
--cc=mingo@elte.hu \
--cc=trini@kernel.crashing.org \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox