diff options
| author | Mark Brown <broonie@opensource.wolfsonmicro.com> | 2009-10-06 16:01:27 +0100 |
|---|---|---|
| committer | Mark Brown <broonie@opensource.wolfsonmicro.com> | 2009-10-06 16:01:27 +0100 |
| commit | 907bc6c7fc7071b00083fc11e510e47dd93df45d (patch) | |
| tree | 0697a608561522c00da9e1814974a2eb051bb96d /kernel/freezer.c | |
| parent | d2b247a8be57647d1745535acd58169fbcbe431a (diff) | |
| parent | 2a0f5cb32772e9a9560209e241a80bfbbc31dbc3 (diff) | |
Merge branch 'for-2.6.32' into for-2.6.33
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); } |
