diff options
author | Thomas Gleixner <tglx@linutronix.de> | 2008-02-13 03:20:43 -0500 |
---|---|---|
committer | Thomas Gleixner <tglx@linutronix.de> | 2008-02-14 16:08:30 -0500 |
commit | 5a7780e725d1bb4c3094fcc12f1c5c5faea1e988 (patch) | |
tree | 50fc5cde427f3854d0b84ba1037fef3fb4693e11 /kernel/futex_compat.c | |
parent | e760e716d47b48caf98da348368fd41b4a9b9e7e (diff) |
hrtimer: check relative timeouts for overflow
Various user space callers ask for relative timeouts. While we fixed
that overflow issue in hrtimer_start(), the sites which convert
relative user space values to absolute timeouts themself were uncovered.
Instead of putting overflow checks into each place add a function
which does the sanity checking and convert all affected callers to use
it.
Thanks to Frans Pop, who reported the problem and tested the fixes.
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Acked-by: Ingo Molnar <mingo@elte.hu>
Tested-by: Frans Pop <elendil@planet.nl>
Diffstat (limited to 'kernel/futex_compat.c')
-rw-r--r-- | kernel/futex_compat.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/kernel/futex_compat.c b/kernel/futex_compat.c index 133d558db452..7d5e4b016f39 100644 --- a/kernel/futex_compat.c +++ b/kernel/futex_compat.c | |||
@@ -176,7 +176,7 @@ asmlinkage long compat_sys_futex(u32 __user *uaddr, int op, u32 val, | |||
176 | 176 | ||
177 | t = timespec_to_ktime(ts); | 177 | t = timespec_to_ktime(ts); |
178 | if (cmd == FUTEX_WAIT) | 178 | if (cmd == FUTEX_WAIT) |
179 | t = ktime_add(ktime_get(), t); | 179 | t = ktime_add_safe(ktime_get(), t); |
180 | tp = &t; | 180 | tp = &t; |
181 | } | 181 | } |
182 | if (cmd == FUTEX_REQUEUE || cmd == FUTEX_CMP_REQUEUE) | 182 | if (cmd == FUTEX_REQUEUE || cmd == FUTEX_CMP_REQUEUE) |