diff options
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);  }  |