diff options
Diffstat (limited to 'kernel')
-rw-r--r-- | kernel/exit.c | 4 | ||||
-rw-r--r-- | kernel/posix-timers.c | 1 | ||||
-rw-r--r-- | kernel/sched.c | 7 |
3 files changed, 7 insertions, 5 deletions
diff --git a/kernel/exit.c b/kernel/exit.c index edaa50b5bbfa..2ef2ad540201 100644 --- a/kernel/exit.c +++ b/kernel/exit.c | |||
@@ -811,10 +811,8 @@ fastcall NORET_TYPE void do_exit(long code) | |||
811 | acct_update_integrals(tsk); | 811 | acct_update_integrals(tsk); |
812 | update_mem_hiwater(tsk); | 812 | update_mem_hiwater(tsk); |
813 | group_dead = atomic_dec_and_test(&tsk->signal->live); | 813 | group_dead = atomic_dec_and_test(&tsk->signal->live); |
814 | if (group_dead) { | 814 | if (group_dead) |
815 | del_timer_sync(&tsk->signal->real_timer); | ||
816 | acct_process(code); | 815 | acct_process(code); |
817 | } | ||
818 | exit_mm(tsk); | 816 | exit_mm(tsk); |
819 | 817 | ||
820 | exit_sem(tsk); | 818 | exit_sem(tsk); |
diff --git a/kernel/posix-timers.c b/kernel/posix-timers.c index fd316c272260..cabb63fc9e16 100644 --- a/kernel/posix-timers.c +++ b/kernel/posix-timers.c | |||
@@ -1197,6 +1197,7 @@ void exit_itimers(struct signal_struct *sig) | |||
1197 | tmr = list_entry(sig->posix_timers.next, struct k_itimer, list); | 1197 | tmr = list_entry(sig->posix_timers.next, struct k_itimer, list); |
1198 | itimer_delete(tmr); | 1198 | itimer_delete(tmr); |
1199 | } | 1199 | } |
1200 | del_timer_sync(&sig->real_timer); | ||
1200 | } | 1201 | } |
1201 | 1202 | ||
1202 | /* | 1203 | /* |
diff --git a/kernel/sched.c b/kernel/sched.c index 66b2ed784822..f12a0c8a7d98 100644 --- a/kernel/sched.c +++ b/kernel/sched.c | |||
@@ -3755,19 +3755,22 @@ EXPORT_SYMBOL(cond_resched); | |||
3755 | */ | 3755 | */ |
3756 | int cond_resched_lock(spinlock_t * lock) | 3756 | int cond_resched_lock(spinlock_t * lock) |
3757 | { | 3757 | { |
3758 | int ret = 0; | ||
3759 | |||
3758 | if (need_lockbreak(lock)) { | 3760 | if (need_lockbreak(lock)) { |
3759 | spin_unlock(lock); | 3761 | spin_unlock(lock); |
3760 | cpu_relax(); | 3762 | cpu_relax(); |
3763 | ret = 1; | ||
3761 | spin_lock(lock); | 3764 | spin_lock(lock); |
3762 | } | 3765 | } |
3763 | if (need_resched()) { | 3766 | if (need_resched()) { |
3764 | _raw_spin_unlock(lock); | 3767 | _raw_spin_unlock(lock); |
3765 | preempt_enable_no_resched(); | 3768 | preempt_enable_no_resched(); |
3766 | __cond_resched(); | 3769 | __cond_resched(); |
3770 | ret = 1; | ||
3767 | spin_lock(lock); | 3771 | spin_lock(lock); |
3768 | return 1; | ||
3769 | } | 3772 | } |
3770 | return 0; | 3773 | return ret; |
3771 | } | 3774 | } |
3772 | 3775 | ||
3773 | EXPORT_SYMBOL(cond_resched_lock); | 3776 | EXPORT_SYMBOL(cond_resched_lock); |