aboutsummaryrefslogtreecommitdiffstats
path: root/kernel
diff options
context:
space:
mode:
Diffstat (limited to 'kernel')
-rw-r--r--kernel/exit.c4
-rw-r--r--kernel/posix-timers.c1
-rw-r--r--kernel/sched.c7
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 */
3756int cond_resched_lock(spinlock_t * lock) 3756int 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
3773EXPORT_SYMBOL(cond_resched_lock); 3776EXPORT_SYMBOL(cond_resched_lock);