From f1727e3ba8a3522795370243170b0e7af42f9cb1 Mon Sep 17 00:00:00 2001 From: Peter Zijlstra Date: Fri, 25 Jan 2008 21:08:32 +0100 Subject: [PATCH] --- yaml --- r: 76187 b: refs/heads/master c: 5a52dd50091b6a6e710a1293db741028f8cc5aac h: refs/heads/master i: 76185: d7aa3637f48918f1dd33ee96f025a920efa9152f 76183: b3e691c064ab7032ba23c803096aa12684b36b7d v: v3 --- [refs] | 2 +- trunk/kernel/posix-cpu-timers.c | 3 ++- trunk/kernel/sched_rt.c | 8 +------- 3 files changed, 4 insertions(+), 9 deletions(-) diff --git a/[refs] b/[refs] index 8ae9e22eb12c..c6b091c3ae3e 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 1020387f5f3b52929b387103cf976321981f8e26 +refs/heads/master: 5a52dd50091b6a6e710a1293db741028f8cc5aac diff --git a/trunk/kernel/posix-cpu-timers.c b/trunk/kernel/posix-cpu-timers.c index 2c076b36c4f6..0b7c82ac467e 100644 --- a/trunk/kernel/posix-cpu-timers.c +++ b/trunk/kernel/posix-cpu-timers.c @@ -1020,7 +1020,8 @@ static void check_thread_timers(struct task_struct *tsk, unsigned long hard = sig->rlim[RLIMIT_RTTIME].rlim_max; unsigned long *soft = &sig->rlim[RLIMIT_RTTIME].rlim_cur; - if (tsk->rt.timeout > DIV_ROUND_UP(hard, USEC_PER_SEC/HZ)) { + if (hard != RLIM_INFINITY && + tsk->rt.timeout > DIV_ROUND_UP(hard, USEC_PER_SEC/HZ)) { /* * At the hard limit, we just die. * No need to calculate anything else now. diff --git a/trunk/kernel/sched_rt.c b/trunk/kernel/sched_rt.c index f1f215db3bd0..2dac5ebb8bcb 100644 --- a/trunk/kernel/sched_rt.c +++ b/trunk/kernel/sched_rt.c @@ -1125,13 +1125,7 @@ static void watchdog(struct rq *rq, struct task_struct *p) p->rt.timeout++; next = DIV_ROUND_UP(min(soft, hard), USEC_PER_SEC/HZ); - if (next > p->rt.timeout) { - u64 next_time = p->se.sum_exec_runtime; - - next_time += next * (NSEC_PER_SEC/HZ); - if (p->it_sched_expires > next_time) - p->it_sched_expires = next_time; - } else + if (p->rt.timeout > next) p->it_sched_expires = p->se.sum_exec_runtime; } }