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
Raw File
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
.gitignore
#
# NOTE! Don't add files that are generated in specific
# subdirectories here. Add them in the ".gitignore" file
# in that subdirectory instead.
#
# Normal rules
#
.*
*.o
*.a
*.s
*.ko
*.mod.c

#
# Top-level generic files
#
vmlinux*
System.map
Module.symvers

#
# Generated include files
#
include/asm
include/config
include/linux/autoconf.h
include/linux/compile.h
include/linux/version.h

back to top