• Tejun Heo's avatar
    freezer: test freezable conditions while holding freezer_lock · 85f1d476
    Tejun Heo authored
    try_to_freeze_tasks() and thaw_processes() use freezable() and
    frozen() as preliminary tests before initiating operations on a task.
    These are done without any synchronization and hinder with
    synchronization cleanup without any real performance benefits.
    
    In try_to_freeze_tasks(), open code self test and move PF_NOFREEZE and
    frozen() tests inside freezer_lock in freeze_task().
    
    thaw_processes() can simply drop freezable() test as frozen() test in
    __thaw_task() is enough.
    
    Note: This used to be a part of larger patch to fix set_freezable()
          race.  Separated out to satisfy ordering among dependent fixes.
    Signed-off-by: default avatarTejun Heo <tj@kernel.org>
    Cc: Oleg Nesterov <oleg@redhat.com>
    85f1d476
freezer.c 4.25 KB