• Tejun Heo's avatar
    freezer: fix set_freezable[_with_signal]() race · 96ee6d85
    Tejun Heo authored
    A kthread doing set_freezable*() may race with on-going PM freeze and
    the freezer might think all tasks are frozen while the new freezable
    kthread is merrily proceeding to execute code paths which aren't
    supposed to be executing during PM freeze.
    
    Reimplement set_freezable[_with_signal]() using __set_freezable() such
    that freezable PF flags are modified under freezer_lock and
    try_to_freeze() is called afterwards.  This eliminates race condition
    against freezing.
    
    Note: Separated out from larger patch to resolve fix order dependency
          Oleg pointed out.
    Signed-off-by: default avatarTejun Heo <tj@kernel.org>
    Cc: Oleg Nesterov <oleg@redhat.com>
    96ee6d85
freezer.h 5.36 KB