• Wengang Wang's avatar
    ocfs2/dlm: remove potential deadlock -V3 · b11f1f1a
    Wengang Wang authored
    When we need to take both dlm_domain_lock and dlm->spinlock, we should take
    them in order of: dlm_domain_lock then dlm->spinlock.
    
    There is pathes disobey this order. That is calling dlm_lockres_put() with
    dlm->spinlock held in dlm_run_purge_list. dlm_lockres_put() calls dlm_put() at
    the ref and dlm_put() locks on dlm_domain_lock.
    
    Fix:
    Don't grab/put the dlm when the initialising/releasing lockres.
    That grab is not required because we don't call dlm_unregister_domain()
    based on refcount.
    Signed-off-by: default avatarWengang Wang <wen.gang.wang@oracle.com>
    Cc: stable@kernel.org
    Signed-off-by: default avatarJoel Becker <joel.becker@oracle.com>
    b11f1f1a
dlmmaster.c 94.3 KB