aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--include/linux/sched.h3
-rw-r--r--kernel/freezer.c6
2 files changed, 1 insertions, 8 deletions
diff --git a/include/linux/sched.h b/include/linux/sched.h
index 68daf4f27e2c..d12bd03b688f 100644
--- a/include/linux/sched.h
+++ b/include/linux/sched.h
@@ -220,7 +220,7 @@ extern char ___assert_task_state[1 - 2*!!(
220 ((task->state & (__TASK_STOPPED | __TASK_TRACED)) != 0) 220 ((task->state & (__TASK_STOPPED | __TASK_TRACED)) != 0)
221#define task_contributes_to_load(task) \ 221#define task_contributes_to_load(task) \
222 ((task->state & TASK_UNINTERRUPTIBLE) != 0 && \ 222 ((task->state & TASK_UNINTERRUPTIBLE) != 0 && \
223 (task->flags & PF_FREEZING) == 0) 223 (task->flags & PF_FROZEN) == 0)
224 224
225#define __set_task_state(tsk, state_value) \ 225#define __set_task_state(tsk, state_value) \
226 do { (tsk)->state = (state_value); } while (0) 226 do { (tsk)->state = (state_value); } while (0)
@@ -1773,7 +1773,6 @@ extern void thread_group_times(struct task_struct *p, cputime_t *ut, cputime_t *
1773#define PF_MEMALLOC 0x00000800 /* Allocating memory */ 1773#define PF_MEMALLOC 0x00000800 /* Allocating memory */
1774#define PF_NPROC_EXCEEDED 0x00001000 /* set_user noticed that RLIMIT_NPROC was exceeded */ 1774#define PF_NPROC_EXCEEDED 0x00001000 /* set_user noticed that RLIMIT_NPROC was exceeded */
1775#define PF_USED_MATH 0x00002000 /* if unset the fpu must be initialized before use */ 1775#define PF_USED_MATH 0x00002000 /* if unset the fpu must be initialized before use */
1776#define PF_FREEZING 0x00004000 /* freeze in progress. do not account to load */
1777#define PF_NOFREEZE 0x00008000 /* this thread should not be frozen */ 1776#define PF_NOFREEZE 0x00008000 /* this thread should not be frozen */
1778#define PF_FROZEN 0x00010000 /* frozen for system suspend */ 1777#define PF_FROZEN 0x00010000 /* frozen for system suspend */
1779#define PF_FSTRANS 0x00020000 /* inside a filesystem transaction */ 1778#define PF_FSTRANS 0x00020000 /* inside a filesystem transaction */
diff --git a/kernel/freezer.c b/kernel/freezer.c
index a257ecd37c48..b8b562124ba9 100644
--- a/kernel/freezer.c
+++ b/kernel/freezer.c
@@ -44,9 +44,6 @@ repeat:
44 recalc_sigpending(); /* We sent fake signal, clean it up */ 44 recalc_sigpending(); /* We sent fake signal, clean it up */
45 spin_unlock_irq(&current->sighand->siglock); 45 spin_unlock_irq(&current->sighand->siglock);
46 46
47 /* prevent accounting of that task to load */
48 current->flags |= PF_FREEZING;
49
50 for (;;) { 47 for (;;) {
51 set_current_state(TASK_UNINTERRUPTIBLE); 48 set_current_state(TASK_UNINTERRUPTIBLE);
52 if (!freezing(current) || 49 if (!freezing(current) ||
@@ -56,9 +53,6 @@ repeat:
56 schedule(); 53 schedule();
57 } 54 }
58 55
59 /* Remove the accounting blocker */
60 current->flags &= ~PF_FREEZING;
61
62 /* leave FROZEN */ 56 /* leave FROZEN */
63 spin_lock_irq(&freezer_lock); 57 spin_lock_irq(&freezer_lock);
64 if (freezing(current)) 58 if (freezing(current))