|
@@ -1060,9 +1060,9 @@ static void check_thread_timers(struct task_struct *tsk,
|
|
|
}
|
|
|
}
|
|
|
|
|
|
-static void stop_process_timers(struct task_struct *tsk)
|
|
|
+static void stop_process_timers(struct signal_struct *sig)
|
|
|
{
|
|
|
- struct thread_group_cputimer *cputimer = &tsk->signal->cputimer;
|
|
|
+ struct thread_group_cputimer *cputimer = &sig->cputimer;
|
|
|
unsigned long flags;
|
|
|
|
|
|
if (!cputimer->running)
|
|
@@ -1071,6 +1071,10 @@ static void stop_process_timers(struct task_struct *tsk)
|
|
|
spin_lock_irqsave(&cputimer->lock, flags);
|
|
|
cputimer->running = 0;
|
|
|
spin_unlock_irqrestore(&cputimer->lock, flags);
|
|
|
+
|
|
|
+ sig->cputime_expires.prof_exp = cputime_zero;
|
|
|
+ sig->cputime_expires.virt_exp = cputime_zero;
|
|
|
+ sig->cputime_expires.sched_exp = 0;
|
|
|
}
|
|
|
|
|
|
static u32 onecputick;
|
|
@@ -1131,7 +1135,7 @@ static void check_process_timers(struct task_struct *tsk,
|
|
|
list_empty(&timers[CPUCLOCK_VIRT]) &&
|
|
|
cputime_eq(sig->it[CPUCLOCK_VIRT].expires, cputime_zero) &&
|
|
|
list_empty(&timers[CPUCLOCK_SCHED])) {
|
|
|
- stop_process_timers(tsk);
|
|
|
+ stop_process_timers(sig);
|
|
|
return;
|
|
|
}
|
|
|
|