aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--kernel/posix-cpu-timers.c3
-rw-r--r--kernel/sched_rt.c8
2 files changed, 3 insertions, 8 deletions
diff --git a/kernel/posix-cpu-timers.c b/kernel/posix-cpu-timers.c
index 2c076b36c4f6..0b7c82ac467e 100644
--- a/kernel/posix-cpu-timers.c
+++ b/kernel/posix-cpu-timers.c
@@ -1020,7 +1020,8 @@ static void check_thread_timers(struct task_struct *tsk,
1020 unsigned long hard = sig->rlim[RLIMIT_RTTIME].rlim_max; 1020 unsigned long hard = sig->rlim[RLIMIT_RTTIME].rlim_max;
1021 unsigned long *soft = &sig->rlim[RLIMIT_RTTIME].rlim_cur; 1021 unsigned long *soft = &sig->rlim[RLIMIT_RTTIME].rlim_cur;
1022 1022
1023 if (tsk->rt.timeout > DIV_ROUND_UP(hard, USEC_PER_SEC/HZ)) { 1023 if (hard != RLIM_INFINITY &&
1024 tsk->rt.timeout > DIV_ROUND_UP(hard, USEC_PER_SEC/HZ)) {
1024 /* 1025 /*
1025 * At the hard limit, we just die. 1026 * At the hard limit, we just die.
1026 * No need to calculate anything else now. 1027 * No need to calculate anything else now.
diff --git a/kernel/sched_rt.c b/kernel/sched_rt.c
index f1f215db3bd0..2dac5ebb8bcb 100644
--- a/kernel/sched_rt.c
+++ b/kernel/sched_rt.c
@@ -1125,13 +1125,7 @@ static void watchdog(struct rq *rq, struct task_struct *p)
1125 1125
1126 p->rt.timeout++; 1126 p->rt.timeout++;
1127 next = DIV_ROUND_UP(min(soft, hard), USEC_PER_SEC/HZ); 1127 next = DIV_ROUND_UP(min(soft, hard), USEC_PER_SEC/HZ);
1128 if (next > p->rt.timeout) { 1128 if (p->rt.timeout > next)
1129 u64 next_time = p->se.sum_exec_runtime;
1130
1131 next_time += next * (NSEC_PER_SEC/HZ);
1132 if (p->it_sched_expires > next_time)
1133 p->it_sched_expires = next_time;
1134 } else
1135 p->it_sched_expires = p->se.sum_exec_runtime; 1129 p->it_sched_expires = p->se.sum_exec_runtime;
1136 } 1130 }
1137} 1131}