diff options
author | Wengang Wang <wen.gang.wang@oracle.com> | 2010-07-30 23:18:00 +0800 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@suse.de> | 2010-08-26 16:41:38 -0700 |
commit | d2c86fbbf767a5b08f2490333f6883918dd8f1df (patch) | |
tree | 54b3ee723aa0331d84f579b0b4e00989d6a8ea5c /arch/x86/kernel/test_rodata.c | |
parent | b12a358cd7e738d257fead4f5f1c94d59cfc346b (diff) |
ocfs2/dlm: remove potential deadlock -V3
commit b11f1f1ab73fd358b1b734a9427744802202ba68 upstream.
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: Wengang Wang <wen.gang.wang@oracle.com>
Signed-off-by: Joel Becker <joel.becker@oracle.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
Diffstat (limited to 'arch/x86/kernel/test_rodata.c')
0 files changed, 0 insertions, 0 deletions