if (pm_nosig_freezing || cgroup_freezing(p))
return true;
- if (pm_freezing && !(p->flags & PF_FREEZER_NOSIG))
+ if (pm_freezing && !(p->flags & PF_KTHREAD))
return true;
return false;
schedule();
}
- spin_lock_irq(¤t->sighand->siglock);
- recalc_sigpending(); /* We sent fake signal, clean it up */
- spin_unlock_irq(¤t->sighand->siglock);
-
pr_debug("%s left refrigerator\n", current->comm);
/*
return false;
}
- if (!(p->flags & PF_FREEZER_NOSIG)) {
+ if (!(p->flags & PF_KTHREAD)) {
fake_signal_wake_up(p);
/*
* fake_signal_wake_up() goes through p's scheduler
* be visible to @p as waking up implies wmb. Waking up inside
* freezer_lock also prevents wakeups from leaking outside
* refrigerator.
- *
- * If !FROZEN, @p hasn't reached refrigerator, recalc sigpending to
- * avoid leaving dangling TIF_SIGPENDING behind.
*/
spin_lock_irqsave(&freezer_lock, flags);
- if (frozen(p)) {
+ if (frozen(p))
wake_up_process(p);
- } else {
- spin_lock(&p->sighand->siglock);
- recalc_sigpending_and_wake(p);
- spin_unlock(&p->sighand->siglock);
- }
spin_unlock_irqrestore(&freezer_lock, flags);
}
/**
- * __set_freezable - make %current freezable
- * @with_signal: do we want %TIF_SIGPENDING for notification too?
+ * set_freezable - make %current freezable
*
* Mark %current freezable and enter refrigerator if necessary.
*/
-bool __set_freezable(bool with_signal)
+bool set_freezable(void)
{
might_sleep();
*/
spin_lock_irq(&freezer_lock);
current->flags &= ~PF_NOFREEZE;
- if (with_signal)
- current->flags &= ~PF_FREEZER_NOSIG;
spin_unlock_irq(&freezer_lock);
return try_to_freeze();
}
-EXPORT_SYMBOL(__set_freezable);
+EXPORT_SYMBOL(set_freezable);