• Tejun Heo's avatar
    freezer: use dedicated lock instead of task_lock() + memory barrier · 0c9af092
    Tejun Heo authored
    Freezer synchronization is needlessly complicated - it's by no means a
    hot path and the priority is staying unintrusive and safe.  This patch
    makes it simply use a dedicated lock instead of piggy-backing on
    task_lock() and playing with memory barriers.
    On the failure path of try_to_freeze_tasks(), locking is moved from it
    to cancel_freezing().  This makes the frozen() test racy but the race
    here is a non-issue as the warning is printed for tasks which failed
    to enter frozen for 20 seconds and race on PF_FROZEN at the last
    moment doesn't change anything.
    This simplifies freezer implementation and eases further changes
    including some race fixes.
    Signed-off-by: default avatarTejun Heo <tj@kernel.org>
freezer.c 4.16 KB