Oleg Nesterov
5dee1707df
move the related code from exit_notify() to exit_signals()
...
The previous bugfix was not optimal, we shouldn't care about group stop
when we are the only thread or the group stop is in progress. In that case
nothing special is needed, just set PF_EXITING and return.
Also, take the related "TIF_SIGPENDING re-targeting" code from exit_notify().
So, from the performance POV the only difference is that we don't trust
!signal_pending() until we take ->siglock. But this in fact fixes another
___pure___ theoretical minor race. __group_complete_signal() finds the
task without PF_EXITING and chooses it as the target for signal_wake_up().
But nothing prevents this task from exiting in between without noticing the
pending signal and thus unpredictably delaying the actual delivery.
Signed-off-by: Oleg Nesterov <oleg@tv-sign.ru>
Cc: Davide Libenzi <davidel@xmailserver.org>
Cc: Ingo Molnar <mingo@elte.hu>
Cc: Roland McGrath <roland@redhat.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2008-02-08 09:22:27 -08:00
..
irq
genirq: stackdump after the "Trying to free already-free IRQ" message
2008-01-30 13:33:24 +01:00
power
PM: documentation cleanups
2008-02-07 01:27:17 -05:00
time
time: fix sysfs_show_{available,current}_clocksources() buffer overflow problem
2008-02-06 10:41:03 -08:00
.gitignore
acct.c
acct: real_parent ppid
2008-01-07 14:55:37 -08:00
audit.c
[AUDIT] ratelimit printk messages audit
2008-02-01 14:25:04 -05:00
audit.h
audit_tree.c
auditfilter.c
[AUDIT] make audit=0 really stop audit messages
2008-02-01 14:24:33 -05:00
auditsc.c
[AUDIT] create context if auditing was ever enabled
2008-02-01 14:24:45 -05:00
backtracetest.c
x86: add a simple backtrace test module
2008-01-30 13:33:08 +01:00
capability.c
Add 64-bit capability support to the kernel
2008-02-05 09:44:20 -08:00
cgroup.c
Handle pid namespaces in cgroups code
2008-02-07 08:42:22 -08:00
cgroup_debug.c
compat.c
configs.c
cpu.c
cpu-hotplug: replace per-subsystem mutexes with get_online_cpus()
2008-01-25 21:08:02 +01:00
cpuset.c
proc: seqfile convert proc_pid_status to properly handle pid namespaces
2008-02-08 09:22:24 -08:00
delayacct.c
dma.c
exec_domain.c
exit.c
move the related code from exit_notify() to exit_signals()
2008-02-08 09:22:27 -08:00
extable.c
module: Don't report discarded init pages as kernel text.
2008-01-29 17:13:18 +11:00
fork.c
Memory controller: accounting setup
2008-02-07 08:42:18 -08:00
futex.c
futex: Add bitset conditional wait/wakeup functionality
2008-02-01 17:45:14 +01:00
futex_compat.c
futex: Add bitset conditional wait/wakeup functionality
2008-02-01 17:45:14 +01:00
hrtimer.c
timerfd: new timerfd API
2008-02-05 09:44:07 -08:00
itimer.c
kallsyms.c
remove support for un-needed _extratext section
2008-02-06 10:41:01 -08:00
Kconfig.hz
sched: high-res preemption tick
2008-01-25 21:08:29 +01:00
Kconfig.preempt
sched: remove the !PREEMPT_BKL code
2008-01-25 21:08:33 +01:00
kexec.c
vmcoreinfo: add "VMCOREINFO_" to all the call for vmcoreinfo_append_str()
2008-02-07 08:42:25 -08:00
kfifo.c
kmod.c
Fix unbalanced helper_lock in kernel/kmod.c
2008-01-17 15:38:59 -08:00
kprobes.c
kprobes: kretprobe user entry-handler
2008-02-06 10:41:11 -08:00
ksysfs.c
Kobject: convert remaining kobject_unregister() to kobject_put()
2008-01-24 20:40:40 -08:00
kthread.c
sched: fix, always create kernel threads with normal priority
2008-01-25 21:08:33 +01:00
latencytop.c
sched: latencytop support
2008-01-25 21:08:34 +01:00
lockdep.c
softlockup: automatically detect hung TASK_UNINTERRUPTIBLE tasks
2008-01-25 21:08:02 +01:00
lockdep_internals.h
lockdep_proc.c
Makefile
namespaces: cleanup the code managed with PID_NS option
2008-02-08 09:22:23 -08:00
marker.c
module.c
fix "modules: make module_address_lookup() safe"
2008-02-08 09:22:24 -08:00
mutex-debug.c
mutex-debug.h
mutex.c
Add mutex_lock_killable
2007-12-06 17:37:59 -05:00
mutex.h
notifier.c
kernel/notifier.c should #include <linux/reboot.h>
2008-02-06 10:41:02 -08:00
ns_cgroup.c
nsproxy.c
namespaces: move the IPC namespace under IPC_NS option
2008-02-08 09:22:23 -08:00
panic.c
ACPI: Taint kernel on ACPI table override (format corrected)
2008-02-06 22:07:51 -05:00
params.c
kernel/params.c: remove sparse-warning (different signedness)
2008-02-06 10:41:08 -08:00
pid.c
namespaces: cleanup the code managed with PID_NS option
2008-02-08 09:22:23 -08:00
pid_namespace.c
namespaces: cleanup the code managed with PID_NS option
2008-02-08 09:22:23 -08:00
pm_qos_params.c
pm qos infrastructure and interface
2008-02-05 09:44:22 -08:00
posix-cpu-timers.c
sched: rt-watchdog: fix .rlim_max = RLIM_INFINITY
2008-01-25 21:08:32 +01:00
posix-timers.c
timerfd: new timerfd API
2008-02-05 09:44:07 -08:00
printk.c
printk.c: use unsigned ints instead of longs for logbuf index
2008-02-06 10:41:04 -08:00
profile.c
debug: clean up kernel/profile.c
2008-01-25 21:08:33 +01:00
ptrace.c
ptrace_check_attach: remove unneeded ->signal != NULL check
2008-02-08 09:22:26 -08:00
rcuclassic.c
Preempt-RCU: implementation
2008-01-25 21:08:24 +01:00
rcupdate.c
Preempt-RCU: fix rcu_barrier for preemptive environment.
2008-01-25 21:08:24 +01:00
rcupreempt.c
Preempt-RCU: CPU Hotplug handling
2008-01-25 21:08:25 +01:00
rcupreempt_trace.c
Preempt-RCU: implementation
2008-01-25 21:08:24 +01:00
rcutorture.c
cpu-hotplug: replace lock_cpu_hotplug() with get_online_cpus()
2008-01-25 21:08:02 +01:00
relay.c
relay: nopage
2008-02-06 10:41:07 -08:00
res_counter.c
Memory controller improve user interface
2008-02-07 08:42:18 -08:00
resource.c
rtmutex-debug.c
rtmutex-debug.h
rtmutex-tester.c
Driver core: change sysdev classes to use dynamic kobject names
2008-01-24 20:40:40 -08:00
rtmutex.c
rtmutex.h
rtmutex_common.h
rwsem.c
sched: mark rwsem functions as __sched for wchan/profiling
2007-12-18 15:21:13 +01:00
sched.c
Merge branch 'task_killable' of git://git.kernel.org/pub/scm/linux/kernel/git/willy/misc
2008-02-01 11:45:47 +11:00
sched_debug.c
sched: keep total / count stats in addition to the max for
2008-01-25 21:08:35 +01:00
sched_fair.c
sched: let +nice tasks have smaller impact
2008-01-31 22:45:22 +01:00
sched_idletask.c
sched: high-res preemption tick
2008-01-25 21:08:29 +01:00
sched_rt.c
sched: fix goto retry in pick_next_task_rt()
2008-01-25 21:08:34 +01:00
sched_stats.h
seccomp.c
signal.c
move the related code from exit_notify() to exit_signals()
2008-02-08 09:22:27 -08:00
softirq.c
time: track accurate idle time with tick_sched.idle_sleeptime
2008-01-30 13:30:04 +01:00
softlockup.c
debug: softlockup looping fix
2008-02-02 14:27:45 +11:00
spinlock.c
spinlock: lockbreak cleanup
2008-01-30 13:31:20 +01:00
srcu.c
make srcu_readers_active() static
2008-02-06 10:41:02 -08:00
stacktrace.c
stop_machine.c
stopmachine: semaphore to mutex
2008-02-06 10:41:08 -08:00
sys.c
sys_setsid: remove now unneeded session != 1 check
2008-02-08 09:22:27 -08:00
sys_ni.c
timerfd: new timerfd API
2008-02-05 09:44:07 -08:00
sysctl.c
hugetlb: add locking for overcommit sysctl
2008-02-08 09:22:23 -08:00
sysctl_check.c
capabilities: introduce per-process capability bounding set
2008-02-05 09:44:20 -08:00
taskstats.c
test_kprobes.c
kprobes: kretprobe user entry-handler
2008-02-06 10:41:11 -08:00
time.c
speed up jiffies conversion functions if HZ==USER_HZ
2008-02-06 10:41:10 -08:00
timer.c
taskstats scaled time cleanup
2008-02-06 10:41:00 -08:00
tsacct.c
uid16.c
user.c
namespaces: cleanup the code managed with the USER_NS option
2008-02-08 09:22:23 -08:00
user_namespace.c
namespaces: cleanup the code managed with the USER_NS option
2008-02-08 09:22:23 -08:00
utsname.c
utsname_sysctl.c
wait.c
wait: Use TASK_NORMAL
2007-12-06 17:34:36 -05:00
workqueue.c
cpu-hotplug: replace per-subsystem mutexes with get_online_cpus()
2008-01-25 21:08:02 +01:00