https://github.com/torvalds/linux
Revision 3de463c7d9d58f8cf3395268230cb20a4c15bffa authored by Oleg Nesterov on 24 October 2005, 10:34:03 UTC, committed by Linus Torvalds on 24 October 2005, 15:12:35 UTC
do_exit() clears ->it_##clock##_expires, but nothing prevents
another cpu to attach the timer to exiting process after that.

After exit_notify() does 'write_unlock_irq(&tasklist_lock)' and
before do_exit() calls 'schedule() local timer interrupt can find
tsk->exit_state != 0. If that state was EXIT_DEAD (or another cpu
does sys_wait4) interrupted task has ->signal == NULL.

At this moment exiting task has no pending cpu timers, they were cleaned
up in __exit_signal()->posix_cpu_timers_exit{,_group}(), so we can just
return from irq.

Signed-off-by: Oleg Nesterov <oleg@tv-sign.ru>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
1 parent 108150e
History
Tip revision: 3de463c7d9d58f8cf3395268230cb20a4c15bffa authored by Oleg Nesterov on 24 October 2005, 10:34:03 UTC
[PATCH] posix-timers: remove false BUG_ON() from run_posix_cpu_timers()
Tip revision: 3de463c
File Mode Size
Makefile -rw-r--r-- 237 bytes
compat.c -rw-r--r-- 17.3 KB
compat_mq.c -rw-r--r-- 4.0 KB
mqueue.c -rw-r--r-- 29.1 KB
msg.c -rw-r--r-- 18.3 KB
msgutil.c -rw-r--r-- 2.4 KB
sem.c -rw-r--r-- 32.8 KB
shm.c -rw-r--r-- 20.7 KB
util.c -rw-r--r-- 16.7 KB
util.h -rw-r--r-- 2.6 KB

back to top