diff options
| author | Oleg Nesterov <oleg@tv-sign.ru> | 2005-10-24 06:36:28 -0400 |
|---|---|---|
| committer | Linus Torvalds <torvalds@g5.osdl.org> | 2005-10-24 11:12:35 -0400 |
| commit | ca531a0a5e01e5122f67cb6aca8fcbfc70e18e0b (patch) | |
| tree | 4dc28c012d1bb78aba82acdcd2462d17020ba77e | |
| parent | 3de463c7d9d58f8cf3395268230cb20a4c15bffa (diff) | |
[PATCH] posix-timers: exit path cleanup
No need to rebalance when task exited
Signed-off-by: Oleg Nesterov <oleg@tv-sign.ru>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
| -rw-r--r-- | kernel/posix-cpu-timers.c | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/kernel/posix-cpu-timers.c b/kernel/posix-cpu-timers.c index ccb04683bf18..92a038064628 100644 --- a/kernel/posix-cpu-timers.c +++ b/kernel/posix-cpu-timers.c | |||
| @@ -486,6 +486,9 @@ static void process_timer_rebalance(struct task_struct *p, | |||
| 486 | struct task_struct *t = p; | 486 | struct task_struct *t = p; |
| 487 | unsigned int nthreads = atomic_read(&p->signal->live); | 487 | unsigned int nthreads = atomic_read(&p->signal->live); |
| 488 | 488 | ||
| 489 | if (!nthreads) | ||
| 490 | return; | ||
| 491 | |||
| 489 | switch (clock_idx) { | 492 | switch (clock_idx) { |
| 490 | default: | 493 | default: |
| 491 | BUG(); | 494 | BUG(); |
| @@ -1160,6 +1163,9 @@ static void check_process_timers(struct task_struct *tsk, | |||
| 1160 | unsigned long long sched_left, sched; | 1163 | unsigned long long sched_left, sched; |
| 1161 | const unsigned int nthreads = atomic_read(&sig->live); | 1164 | const unsigned int nthreads = atomic_read(&sig->live); |
| 1162 | 1165 | ||
| 1166 | if (!nthreads) | ||
| 1167 | return; | ||
| 1168 | |||
| 1163 | prof_left = cputime_sub(prof_expires, utime); | 1169 | prof_left = cputime_sub(prof_expires, utime); |
| 1164 | prof_left = cputime_sub(prof_left, stime); | 1170 | prof_left = cputime_sub(prof_left, stime); |
| 1165 | prof_left = cputime_div(prof_left, nthreads); | 1171 | prof_left = cputime_div(prof_left, nthreads); |
