diff options
Diffstat (limited to 'kernel')
-rw-r--r-- | kernel/audit.c | 1 | ||||
-rw-r--r-- | kernel/exit.c | 6 | ||||
-rw-r--r-- | kernel/fork.c | 2 | ||||
-rw-r--r-- | kernel/rcutorture.c | 4 | ||||
-rw-r--r-- | kernel/rtmutex-tester.c | 1 | ||||
-rw-r--r-- | kernel/sched.c | 3 | ||||
-rw-r--r-- | kernel/softirq.c | 3 | ||||
-rw-r--r-- | kernel/softlockup.c | 2 | ||||
-rw-r--r-- | kernel/workqueue.c | 4 |
9 files changed, 14 insertions, 12 deletions
diff --git a/kernel/audit.c b/kernel/audit.c index 5ce8851facf7..eb0f9165b401 100644 --- a/kernel/audit.c +++ b/kernel/audit.c | |||
@@ -392,6 +392,7 @@ static int kauditd_thread(void *dummy) | |||
392 | { | 392 | { |
393 | struct sk_buff *skb; | 393 | struct sk_buff *skb; |
394 | 394 | ||
395 | set_freezable(); | ||
395 | while (!kthread_should_stop()) { | 396 | while (!kthread_should_stop()) { |
396 | skb = skb_dequeue(&audit_skb_queue); | 397 | skb = skb_dequeue(&audit_skb_queue); |
397 | wake_up(&audit_backlog_wait); | 398 | wake_up(&audit_backlog_wait); |
diff --git a/kernel/exit.c b/kernel/exit.c index 57626692cd90..e8af8d0c2483 100644 --- a/kernel/exit.c +++ b/kernel/exit.c | |||
@@ -31,6 +31,7 @@ | |||
31 | #include <linux/mempolicy.h> | 31 | #include <linux/mempolicy.h> |
32 | #include <linux/taskstats_kern.h> | 32 | #include <linux/taskstats_kern.h> |
33 | #include <linux/delayacct.h> | 33 | #include <linux/delayacct.h> |
34 | #include <linux/freezer.h> | ||
34 | #include <linux/cpuset.h> | 35 | #include <linux/cpuset.h> |
35 | #include <linux/syscalls.h> | 36 | #include <linux/syscalls.h> |
36 | #include <linux/signal.h> | 37 | #include <linux/signal.h> |
@@ -387,6 +388,11 @@ void daemonize(const char *name, ...) | |||
387 | * they would be locked into memory. | 388 | * they would be locked into memory. |
388 | */ | 389 | */ |
389 | exit_mm(current); | 390 | exit_mm(current); |
391 | /* | ||
392 | * We don't want to have TIF_FREEZE set if the system-wide hibernation | ||
393 | * or suspend transition begins right now. | ||
394 | */ | ||
395 | current->flags |= PF_NOFREEZE; | ||
390 | 396 | ||
391 | set_special_pids(1, 1); | 397 | set_special_pids(1, 1); |
392 | proc_clear_tty(current); | 398 | proc_clear_tty(current); |
diff --git a/kernel/fork.c b/kernel/fork.c index 7c5c5888e00a..ba39bdb2a7b8 100644 --- a/kernel/fork.c +++ b/kernel/fork.c | |||
@@ -923,7 +923,7 @@ static inline void copy_flags(unsigned long clone_flags, struct task_struct *p) | |||
923 | { | 923 | { |
924 | unsigned long new_flags = p->flags; | 924 | unsigned long new_flags = p->flags; |
925 | 925 | ||
926 | new_flags &= ~(PF_SUPERPRIV | PF_NOFREEZE); | 926 | new_flags &= ~PF_SUPERPRIV; |
927 | new_flags |= PF_FORKNOEXEC; | 927 | new_flags |= PF_FORKNOEXEC; |
928 | if (!(clone_flags & CLONE_PTRACE)) | 928 | if (!(clone_flags & CLONE_PTRACE)) |
929 | p->ptrace = 0; | 929 | p->ptrace = 0; |
diff --git a/kernel/rcutorture.c b/kernel/rcutorture.c index 55ba82a85a66..ddff33247785 100644 --- a/kernel/rcutorture.c +++ b/kernel/rcutorture.c | |||
@@ -40,6 +40,7 @@ | |||
40 | #include <linux/moduleparam.h> | 40 | #include <linux/moduleparam.h> |
41 | #include <linux/percpu.h> | 41 | #include <linux/percpu.h> |
42 | #include <linux/notifier.h> | 42 | #include <linux/notifier.h> |
43 | #include <linux/freezer.h> | ||
43 | #include <linux/cpu.h> | 44 | #include <linux/cpu.h> |
44 | #include <linux/random.h> | 45 | #include <linux/random.h> |
45 | #include <linux/delay.h> | 46 | #include <linux/delay.h> |
@@ -518,7 +519,6 @@ rcu_torture_writer(void *arg) | |||
518 | 519 | ||
519 | VERBOSE_PRINTK_STRING("rcu_torture_writer task started"); | 520 | VERBOSE_PRINTK_STRING("rcu_torture_writer task started"); |
520 | set_user_nice(current, 19); | 521 | set_user_nice(current, 19); |
521 | current->flags |= PF_NOFREEZE; | ||
522 | 522 | ||
523 | do { | 523 | do { |
524 | schedule_timeout_uninterruptible(1); | 524 | schedule_timeout_uninterruptible(1); |
@@ -558,7 +558,6 @@ rcu_torture_fakewriter(void *arg) | |||
558 | 558 | ||
559 | VERBOSE_PRINTK_STRING("rcu_torture_fakewriter task started"); | 559 | VERBOSE_PRINTK_STRING("rcu_torture_fakewriter task started"); |
560 | set_user_nice(current, 19); | 560 | set_user_nice(current, 19); |
561 | current->flags |= PF_NOFREEZE; | ||
562 | 561 | ||
563 | do { | 562 | do { |
564 | schedule_timeout_uninterruptible(1 + rcu_random(&rand)%10); | 563 | schedule_timeout_uninterruptible(1 + rcu_random(&rand)%10); |
@@ -589,7 +588,6 @@ rcu_torture_reader(void *arg) | |||
589 | 588 | ||
590 | VERBOSE_PRINTK_STRING("rcu_torture_reader task started"); | 589 | VERBOSE_PRINTK_STRING("rcu_torture_reader task started"); |
591 | set_user_nice(current, 19); | 590 | set_user_nice(current, 19); |
592 | current->flags |= PF_NOFREEZE; | ||
593 | 591 | ||
594 | do { | 592 | do { |
595 | idx = cur_ops->readlock(); | 593 | idx = cur_ops->readlock(); |
diff --git a/kernel/rtmutex-tester.c b/kernel/rtmutex-tester.c index 015fc633c96c..e3055ba69159 100644 --- a/kernel/rtmutex-tester.c +++ b/kernel/rtmutex-tester.c | |||
@@ -260,6 +260,7 @@ static int test_func(void *data) | |||
260 | int ret; | 260 | int ret; |
261 | 261 | ||
262 | current->flags |= PF_MUTEX_TESTER; | 262 | current->flags |= PF_MUTEX_TESTER; |
263 | set_freezable(); | ||
263 | allow_signal(SIGHUP); | 264 | allow_signal(SIGHUP); |
264 | 265 | ||
265 | for(;;) { | 266 | for(;;) { |
diff --git a/kernel/sched.c b/kernel/sched.c index 1c8076676eb1..cb31fb4a1379 100644 --- a/kernel/sched.c +++ b/kernel/sched.c | |||
@@ -4912,8 +4912,6 @@ static int migration_thread(void *data) | |||
4912 | struct migration_req *req; | 4912 | struct migration_req *req; |
4913 | struct list_head *head; | 4913 | struct list_head *head; |
4914 | 4914 | ||
4915 | try_to_freeze(); | ||
4916 | |||
4917 | spin_lock_irq(&rq->lock); | 4915 | spin_lock_irq(&rq->lock); |
4918 | 4916 | ||
4919 | if (cpu_is_offline(cpu)) { | 4917 | if (cpu_is_offline(cpu)) { |
@@ -5147,7 +5145,6 @@ migration_call(struct notifier_block *nfb, unsigned long action, void *hcpu) | |||
5147 | p = kthread_create(migration_thread, hcpu, "migration/%d", cpu); | 5145 | p = kthread_create(migration_thread, hcpu, "migration/%d", cpu); |
5148 | if (IS_ERR(p)) | 5146 | if (IS_ERR(p)) |
5149 | return NOTIFY_BAD; | 5147 | return NOTIFY_BAD; |
5150 | p->flags |= PF_NOFREEZE; | ||
5151 | kthread_bind(p, cpu); | 5148 | kthread_bind(p, cpu); |
5152 | /* Must be high prio: stop_machine expects to yield to it. */ | 5149 | /* Must be high prio: stop_machine expects to yield to it. */ |
5153 | rq = task_rq_lock(p, &flags); | 5150 | rq = task_rq_lock(p, &flags); |
diff --git a/kernel/softirq.c b/kernel/softirq.c index 8de267790166..0f546ddea43d 100644 --- a/kernel/softirq.c +++ b/kernel/softirq.c | |||
@@ -14,6 +14,7 @@ | |||
14 | #include <linux/notifier.h> | 14 | #include <linux/notifier.h> |
15 | #include <linux/percpu.h> | 15 | #include <linux/percpu.h> |
16 | #include <linux/cpu.h> | 16 | #include <linux/cpu.h> |
17 | #include <linux/freezer.h> | ||
17 | #include <linux/kthread.h> | 18 | #include <linux/kthread.h> |
18 | #include <linux/rcupdate.h> | 19 | #include <linux/rcupdate.h> |
19 | #include <linux/smp.h> | 20 | #include <linux/smp.h> |
@@ -488,8 +489,6 @@ void __init softirq_init(void) | |||
488 | 489 | ||
489 | static int ksoftirqd(void * __bind_cpu) | 490 | static int ksoftirqd(void * __bind_cpu) |
490 | { | 491 | { |
491 | current->flags |= PF_NOFREEZE; | ||
492 | |||
493 | set_current_state(TASK_INTERRUPTIBLE); | 492 | set_current_state(TASK_INTERRUPTIBLE); |
494 | 493 | ||
495 | while (!kthread_should_stop()) { | 494 | while (!kthread_should_stop()) { |
diff --git a/kernel/softlockup.c b/kernel/softlockup.c index 0131e296ffb4..708d4882c0c3 100644 --- a/kernel/softlockup.c +++ b/kernel/softlockup.c | |||
@@ -10,6 +10,7 @@ | |||
10 | #include <linux/cpu.h> | 10 | #include <linux/cpu.h> |
11 | #include <linux/init.h> | 11 | #include <linux/init.h> |
12 | #include <linux/delay.h> | 12 | #include <linux/delay.h> |
13 | #include <linux/freezer.h> | ||
13 | #include <linux/kthread.h> | 14 | #include <linux/kthread.h> |
14 | #include <linux/notifier.h> | 15 | #include <linux/notifier.h> |
15 | #include <linux/module.h> | 16 | #include <linux/module.h> |
@@ -116,7 +117,6 @@ static int watchdog(void * __bind_cpu) | |||
116 | struct sched_param param = { .sched_priority = MAX_RT_PRIO-1 }; | 117 | struct sched_param param = { .sched_priority = MAX_RT_PRIO-1 }; |
117 | 118 | ||
118 | sched_setscheduler(current, SCHED_FIFO, ¶m); | 119 | sched_setscheduler(current, SCHED_FIFO, ¶m); |
119 | current->flags |= PF_NOFREEZE; | ||
120 | 120 | ||
121 | /* initialize timestamp */ | 121 | /* initialize timestamp */ |
122 | touch_softlockup_watchdog(); | 122 | touch_softlockup_watchdog(); |
diff --git a/kernel/workqueue.c b/kernel/workqueue.c index d7d3fa3072e5..1935302cc645 100644 --- a/kernel/workqueue.c +++ b/kernel/workqueue.c | |||
@@ -282,8 +282,8 @@ static int worker_thread(void *__cwq) | |||
282 | struct cpu_workqueue_struct *cwq = __cwq; | 282 | struct cpu_workqueue_struct *cwq = __cwq; |
283 | DEFINE_WAIT(wait); | 283 | DEFINE_WAIT(wait); |
284 | 284 | ||
285 | if (!cwq->wq->freezeable) | 285 | if (cwq->wq->freezeable) |
286 | current->flags |= PF_NOFREEZE; | 286 | set_freezable(); |
287 | 287 | ||
288 | set_user_nice(current, -5); | 288 | set_user_nice(current, -5); |
289 | 289 | ||