Rafael J. Wysocki
33e1c288da
freezer: close potential race between refrigerator and thaw_tasks
...
If the freezing of tasks fails and a task is preempted in refrigerator()
before calling frozen_process(), then thaw_tasks() may run before this task is
frozen. In that case the task will freeze and no one will thaw it.
To fix this race we can call freezing(current) in refrigerator() along with
frozen_process(current) under the task_lock() which also should be taken in
the error path of try_to_freeze_tasks() as well as in thaw_process().
Moreover, if thaw_process() additionally clears TIF_FREEZE for tasks that are
not frozen, we can be sure that all tasks are thawed and there are no pending
"freeze" requests after thaw_tasks() has run.
Signed-off-by: Rafael J. Wysocki <rjw@sisk.pl>
Acked-by: Pavel Machek <pavel@ucw.cz>
Cc: Gautham R Shenoy <ego@in.ibm.com>
Cc: Oleg Nesterov <oleg@tv-sign.ru>
Cc: "Eric W. Biederman" <ebiederm@xmission.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2007-05-23 20:14:10 -07:00
..
irq
[IA64] SN: validate smp_affinity mask on intr redirect
2007-05-11 09:35:38 -07:00
power
freezer: close potential race between refrigerator and thaw_tasks
2007-05-23 20:14:10 -07:00
time
Detach sched.h from mm.h
2007-05-21 09:18:19 -07:00
.gitignore
acct.c
audit.c
audit: add spaces on either side of case "..." operator.
2007-05-08 11:15:09 -07:00
audit.h
[PATCH] audit signal recipients
2007-05-11 05:38:25 -04:00
auditfilter.c
audit_match_signal() and friends are used only if CONFIG_AUDITSYSCALL is set
2007-05-15 18:56:37 -07:00
auditsc.c
[PATCH] Abnormal End of Processes
2007-05-11 05:38:26 -04:00
capability.c
compat.c
signal/timer/event: timerfd compat code
2007-05-11 08:29:36 -07:00
configs.c
use simple_read_from_buffer in kernel/
2007-05-09 12:30:49 -07:00
cpu.c
microcode: use suspend-related CPU hotplug notifications
2007-05-09 12:30:56 -07:00
cpuset.c
use simple_read_from_buffer in kernel/
2007-05-09 12:30:49 -07:00
delayacct.c
KMEM_CACHE(): simplify slab cache creation
2007-05-07 12:12:55 -07:00
die_notifier.c
move die notifier handling to common code
2007-05-08 11:15:04 -07:00
dma.c
exec_domain.c
exit.c
signal/timer/event: signalfd core
2007-05-11 08:29:36 -07:00
extable.c
fork.c
Remove SLAB_CTOR_CONSTRUCTOR
2007-05-17 05:23:04 -07:00
futex.c
FUTEX: new PRIVATE futexes
2007-05-09 12:30:55 -07:00
futex_compat.c
futex_requeue_pi optimization
2007-05-09 12:30:55 -07:00
hrtimer.c
Add suspend-related notifications for CPU hotplug
2007-05-09 12:30:56 -07:00
itimer.c
The scheduled -EINVAL for invalid timevals in setitimer
2007-05-08 11:15:13 -07:00
kallsyms.c
kallsyms: cleanup: use seq_release_private() where appropriate
2007-05-08 11:15:09 -07:00
Kconfig.hz
Kconfig.preempt
Fix trivial typos in Kconfig* files
2007-05-09 07:12:20 +02:00
kexec.c
kdump/kexec: calculate note size at compile time
2007-05-08 11:15:07 -07:00
kfifo.c
kmod.c
wait_for_helper: remove unneeded do_sigaction()
2007-05-09 12:30:53 -07:00
kprobes.c
Kprobes: The ON/OFF knob thru debugfs
2007-05-08 11:15:19 -07:00
ksysfs.c
remove "struct subsystem" as it is no longer needed
2007-05-02 18:57:59 -07:00
kthread.c
change kernel threads to ignore signals instead of blocking them
2007-05-09 12:30:53 -07:00
latency.c
lockdep.c
lockdep: removed unused ip argument in mark_lock & mark_held_locks
2007-05-08 11:15:13 -07:00
lockdep_internals.h
lockdep_proc.c
Makefile
move die notifier handling to common code
2007-05-08 11:15:04 -07:00
module.c
Fix minor typoes in kernel/module.c
2007-05-09 07:26:28 +02:00
mutex-debug.c
mutex-debug.h
mutex.c
wrap access to thread_info
2007-05-09 12:30:56 -07:00
mutex.h
nsproxy.c
Merge sys_clone()/sys_unshare() nsproxy and namespace handling
2007-05-08 11:15:00 -07:00
panic.c
params.c
kernel/params.c: fix lying comment for param_array()
2007-05-08 11:15:08 -07:00
pid.c
statically initialize struct pid for swapper
2007-05-11 08:29:35 -07:00
posix-cpu-timers.c
Introduce a handy list_first_entry macro
2007-05-08 11:15:11 -07:00
posix-timers.c
header cleaning: don't include smp_lock.h when not used
2007-05-08 11:15:07 -07:00
printk.c
header cleaning: don't include smp_lock.h when not used
2007-05-08 11:15:07 -07:00
profile.c
Detach sched.h from mm.h
2007-05-21 09:18:19 -07:00
ptrace.c
[PATCH] auditing ptrace
2007-05-11 05:38:25 -04:00
rcupdate.c
Add suspend-related notifications for CPU hotplug
2007-05-09 12:30:56 -07:00
rcutorture.c
rcutorture: Remove redundant assignment to cur_ops in for loop
2007-05-08 11:15:17 -07:00
relay.c
Merge git://git.kernel.org/pub/scm/linux/kernel/git/bunk/trivial
2007-05-09 12:54:17 -07:00
resource.c
libata/IDE: remove combined mode quirk
2007-04-28 14:15:59 -04:00
rtmutex-debug.c
rtmutex-debug.h
rtmutex-tester.c
rtmutex.c
futex_requeue_pi optimization
2007-05-09 12:30:55 -07:00
rtmutex.h
rtmutex_common.h
futex_requeue_pi optimization
2007-05-09 12:30:55 -07:00
rwsem.c
Lockdep treats down_write_trylock like regular down_write
2007-05-08 11:15:09 -07:00
sched.c
Add suspend-related notifications for CPU hotplug
2007-05-09 12:30:56 -07:00
seccomp.c
signal.c
Merge branch 'audit.b38' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/audit-current
2007-05-11 09:57:16 -07:00
softirq.c
Add suspend-related notifications for CPU hotplug
2007-05-09 12:30:56 -07:00
softlockup.c
Add suspend-related notifications for CPU hotplug
2007-05-09 12:30:56 -07:00
spinlock.c
srcu.c
stacktrace.c
stop_machine.c
stop_machine() now uses hard_irq_disable
2007-05-11 08:29:34 -07:00
sys.c
attach_pid() with struct pid parameter
2007-05-11 08:29:35 -07:00
sys_ni.c
compat signalfd and timerfd are cond syscalls
2007-05-12 10:55:40 -07:00
sysctl.c
make sysctl/kernel/core_pattern and fs/exec.c agree on maximum core filename size
2007-05-17 05:23:05 -07:00
taskstats.c
KMEM_CACHE(): simplify slab cache creation
2007-05-07 12:12:55 -07:00
time.c
header cleaning: don't include smp_lock.h when not used
2007-05-08 11:15:07 -07:00
timer.c
timekeeping fix patch got mis-applied
2007-05-14 12:13:11 -07:00
tsacct.c
[PATCH] time: x86_64: split x86_64/kernel/time.c up
2007-02-16 08:14:00 -08:00
uid16.c
header cleaning: don't include smp_lock.h when not used
2007-05-08 11:15:07 -07:00
user.c
utsname.c
Merge sys_clone()/sys_unshare() nsproxy and namespace handling
2007-05-08 11:15:00 -07:00
utsname_sysctl.c
wait.c
Fix occurrences of "the the "
2007-05-09 08:57:56 +02:00
workqueue.c
Add suspend-related notifications for CPU hotplug
2007-05-09 12:30:56 -07:00