Rafael J. Wysocki
3df494a32b
[PATCH] PM: Fix freezing of stopped tasks
...
Currently, if a task is stopped (ie. it's in the TASK_STOPPED state), it
is considered by the freezer as unfreezeable. However, there may be a race
between the freezer and the delivery of the continuation signal to the task
resulting in the task running after we have finished freezing the other
tasks. This, in turn, may lead to undesirable effects up to and including
data corruption.
To prevent this from happening we first need to make the freezer consider
stopped tasks as freezeable. For this purpose we need to make freezeable()
stop returning 0 for these tasks and we need to force them to enter the
refrigerator. However, if there's no continuation signal in the meantime,
the stopped tasks should remain stopped after all processes have been
thawed, so we need to send an additional SIGSTOP to each of them before
waking it up.
Also, a stopped task that has just been woken up should first check if
there's a freezing request for it and go to the refrigerator if that's the
case.
Signed-off-by: Rafael J. Wysocki <rjw@sisk.pl>
Acked-by: Pavel Machek <pavel@ucw.cz>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
2006-12-13 09:05:49 -08:00
..
irq
[PATCH] CPEI gets warning at kernel/irq/migration.c:27/move_masked_irq()
2006-12-08 08:28:37 -08:00
power
[PATCH] PM: Fix freezing of stopped tasks
2006-12-13 09:05:49 -08:00
time
[PATCH] clocksource: small cleanup
2006-12-10 09:57:22 -08:00
.gitignore
acct.c
[PATCH] kernel: change uses of f_{dentry, vfsmnt} to use f_path
2006-12-08 08:28:42 -08:00
audit.c
[PATCH] Add include/linux/freezer.h and move definitions from sched.h
2006-12-07 08:39:27 -08:00
audit.h
auditfilter.c
[PATCH] kernel core: replace kmalloc+memset with kzalloc
2006-12-07 08:39:41 -08:00
auditsc.c
[PATCH] struct path: convert kernel
2006-12-08 08:28:46 -08:00
capability.c
compat.c
[PATCH] Create compat_sys_migrate_pages
2006-11-03 12:27:59 -08:00
configs.c
[PATCH] struct seq_operations and struct file_operations constification
2006-12-07 08:39:46 -08:00
cpu.c
[PATCH] suspend: don't change cpus_allowed for task initiating the suspend
2006-12-07 08:39:28 -08:00
cpuset.c
[PATCH] cpuset: rework cpuset_zone_allowed api
2006-12-13 09:05:49 -08:00
delayacct.c
[PATCH] slab: remove kmem_cache_t
2006-12-07 08:39:25 -08:00
dma.c
[PATCH] struct seq_operations and struct file_operations constification
2006-12-07 08:39:46 -08:00
exec_domain.c
exit.c
[PATCH] fdtable: Remove the free_files field
2006-12-10 09:57:22 -08:00
extable.c
fork.c
[PATCH] fdtable: Remove the free_files field
2006-12-10 09:57:22 -08:00
futex.c
[PATCH] kernel: change uses of f_{dentry, vfsmnt} to use f_path
2006-12-08 08:28:42 -08:00
futex_compat.c
[PATCH] __user annotations: futex
2006-10-10 15:37:22 -07:00
hrtimer.c
itimer.c
kallsyms.c
[PATCH] move kallsyms data to .rodata
2006-12-08 08:28:37 -08:00
Kconfig.hz
[PATCH] HZ: 300Hz support
2006-12-07 08:39:36 -08:00
Kconfig.preempt
kexec.c
Merge branch 'release' of master.kernel.org:/pub/scm/linux/kernel/git/aegl/linux-2.6
2006-12-07 15:39:22 -08:00
kfifo.c
kmod.c
[PATCH] rename struct namespace to struct mnt_namespace
2006-12-08 08:28:51 -08:00
kprobes.c
[PATCH] kprobes: enable booster on the preemptible kernel
2006-12-07 08:39:38 -08:00
ksysfs.c
kthread.c
WorkStruct: Pass the work_struct pointer instead of context data
2006-11-22 14:55:48 +00:00
latency.c
[PATCH] severing module.h->sched.h
2006-12-04 02:00:22 -05:00
lockdep.c
Merge branch 'for-linus' of git://one.firstfloor.org/home/andi/git/linux-2.6
2006-12-07 08:59:11 -08:00
lockdep_internals.h
[PATCH] lockdep: more chains
2006-12-07 08:39:43 -08:00
lockdep_proc.c
[PATCH] struct seq_operations and struct file_operations constification
2006-12-07 08:39:46 -08:00
Makefile
[PATCH] srcu-3: RCU variant permitting read-side blocking
2006-10-04 07:55:30 -07:00
module.c
[PATCH] struct seq_operations and struct file_operations constification
2006-12-07 08:39:46 -08:00
mutex-debug.c
[PATCH] lockdep: show more details about self-test failures
2006-12-07 08:39:43 -08:00
mutex-debug.h
mutex.c
[PATCH] lockdep: avoid lockdep warning in md
2006-12-08 08:28:39 -08:00
mutex.h
nsproxy.c
[PATCH] Revert "[PATCH] identifier to nsproxy"
2006-12-13 09:05:47 -08:00
panic.c
params.c
pid.c
[PATCH] add child reaper to pid_namespace
2006-12-08 08:28:52 -08:00
posix-cpu-timers.c
[PATCH] posix-cpu-timers: prevent signal delivery starvation
2006-10-17 08:18:43 -07:00
posix-timers.c
[PATCH] slab: remove kmem_cache_t
2006-12-07 08:39:25 -08:00
printk.c
[PATCH] add ignore_loglevel boot option
2006-12-07 08:39:47 -08:00
profile.c
[PATCH] struct seq_operations and struct file_operations constification
2006-12-07 08:39:46 -08:00
ptrace.c
rcupdate.c
[PATCH] rcu: add a prefetch() in rcu_do_batch()
2006-12-07 08:39:40 -08:00
rcutorture.c
[PATCH] Add Sparse annotations to SRCU wrapper functions in rcutorture
2006-12-07 08:39:44 -08:00
relay.c
[PATCH] kernel: change uses of f_{dentry, vfsmnt} to use f_path
2006-12-08 08:28:42 -08:00
resource.c
[PATCH] struct seq_operations and struct file_operations constification
2006-12-07 08:39:46 -08:00
rtmutex-debug.c
Remove all inclusions of <linux/config.h>
2006-10-04 03:38:54 -04:00
rtmutex-debug.h
rtmutex-tester.c
[PATCH] Add include/linux/freezer.h and move definitions from sched.h
2006-12-07 08:39:27 -08:00
rtmutex.c
rtmutex.h
rtmutex_common.h
rwsem.c
sched.c
[PATCH] kernel/sched.c: whitespace cleanups
2006-12-10 09:57:20 -08:00
seccomp.c
signal.c
[PATCH] PM: Fix freezing of stopped tasks
2006-12-13 09:05:49 -08:00
softirq.c
[PATCH] softirq: remove BUG_ONs which can incorrectly trigger
2006-12-07 08:39:43 -08:00
softlockup.c
spinlock.c
[PATCH] lockdep: spin_lock_irqsave_nested()
2006-11-25 13:28:34 -08:00
srcu.c
[PATCH] SRCU: report out-of-memory errors
2006-10-04 07:55:30 -07:00
stacktrace.c
stop_machine.c
sys.c
[PATCH] sys_setpgid: eliminate unnecessary do_each_task_pid(PIDTYPE_PGID)
2006-12-08 08:28:52 -08:00
sys_ni.c
[PATCH] Create compat_sys_migrate_pages
2006-11-03 12:27:59 -08:00
sysctl.c
[PATCH] sysctl: remove unused "context" param
2006-12-10 09:55:41 -08:00
taskstats.c
[PATCH] taskstats: cleanup reply assembling
2006-12-07 08:39:34 -08:00
time.c
timer.c
[PATCH] clocksource: small cleanup
2006-12-10 09:57:22 -08:00
tsacct.c
[PATCH] io-accounting: via taskstats
2006-12-10 09:55:41 -08:00
uid16.c
unwind.c
[PATCH] unwinder: move .eh_frame to RODATA
2006-12-07 02:14:19 +01:00
user.c
[PATCH] slab: remove kmem_cache_t
2006-12-07 08:39:25 -08:00
utsname.c
wait.c
workqueue.c
[PATCH] WorkStruct: Use direct assignment rather than cmpxchg()
2006-12-09 12:25:08 -08:00