Skip to content
  • Colin Cross's avatar
    freezer: add unsafe versions of freezable helpers for CIFS · 5853cc2a
    Colin Cross authored
    CIFS calls wait_event_freezekillable_unsafe with a VFS lock held,
    which is unsafe and will cause lockdep warnings when 6aa97070
    "lockdep: check that no locks held at freeze time" is reapplied
    (it was reverted in dbf520a9).  CIFS shouldn't be doing this, but
    it has long-running syscalls that must hold a lock but also
    shouldn't block suspend.  Until CIFS freeze handling is rewritten
    to use a signal to exit out of the critical section, add a new
    wait_event_freezekillable_unsafe helper that will not run the
    lockdep test when 6aa97070
    
     is reapplied, and call it from CIFS.
    
    In practice the likley result of holding the lock while freezing
    is that a second task blocked on the lock will never freeze,
    aborting suspend, but it is possible to manufacture a case using
    the cgroup freezer, the lock, and the suspend freezer to create
    a deadlock.  Silencing the lockdep warning here will allow
    problems to be found in other drivers that may have a more
    serious deadlock risk, and prevent new problems from being added.
    
    Acked-by: default avatarPavel Machek <pavel@ucw.cz>
    Acked-by: default avatarTejun Heo <tj@kernel.org>
    Reviewed-by: default avatarJeff Layton <jlayton@redhat.com>
    Signed-off-by: default avatarColin Cross <ccross@android.com>
    Signed-off-by: default avatarRafael J. Wysocki <rafael.j.wysocki@intel.com>
    5853cc2a