diff options
author | Ingo Molnar <mingo@elte.hu> | 2009-08-04 13:58:28 +0200 |
---|---|---|
committer | Ingo Molnar <mingo@elte.hu> | 2009-08-04 13:58:28 +0200 |
commit | e16852cfc5580b88cb327413ab8c89375f380592 (patch) | |
tree | 67e7d5b84e2602986f2da689625e5a25d7af7bb4 /kernel/freezer.c | |
parent | bdff78707f3ce47e891f3201c9666122a70556ce (diff) | |
parent | 74e7ff8c50b6b022e6ffaa736b16a4dc161d3eaf (diff) |
Merge branch 'tracing/fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/frederic/random-tracing into tracing/urgent
Diffstat (limited to 'kernel/freezer.c')
-rw-r--r-- | kernel/freezer.c | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/kernel/freezer.c b/kernel/freezer.c index 2f4936cf708..bd1d42b17cb 100644 --- a/kernel/freezer.c +++ b/kernel/freezer.c @@ -44,12 +44,19 @@ void refrigerator(void) recalc_sigpending(); /* We sent fake signal, clean it up */ spin_unlock_irq(¤t->sighand->siglock); + /* prevent accounting of that task to load */ + current->flags |= PF_FREEZING; + for (;;) { set_current_state(TASK_UNINTERRUPTIBLE); if (!frozen(current)) break; schedule(); } + + /* Remove the accounting blocker */ + current->flags &= ~PF_FREEZING; + pr_debug("%s left refrigerator\n", current->comm); __set_current_state(save); } |