diff options
author | Junxiao Bi <[email protected]> | 2015-05-05 16:24:02 -0700 |
---|---|---|
committer | Linus Torvalds <[email protected]> | 2015-05-05 17:10:11 -0700 |
commit | b1432a2a35565f538586774a03bf277c27fc267d (patch) | |
tree | fb75af1bd5c0e4c91b7bb114ca31880ecfbfc0d6 /lib/cpu-notifier-error-inject.c | |
parent | d8fd150fe3935e1692bf57c66691e17409ebb9c1 (diff) |
ocfs2: dlm: fix race between purge and get lock resource
There is a race window in dlm_get_lock_resource(), which may return a
lock resource which has been purged. This will cause the process to
hang forever in dlmlock() as the ast msg can't be handled due to its
lock resource not existing.
dlm_get_lock_resource {
...
spin_lock(&dlm->spinlock);
tmpres = __dlm_lookup_lockres_full(dlm, lockid, namelen, hash);
if (tmpres) {
spin_unlock(&dlm->spinlock);
>>>>>>>> race window, dlm_run_purge_list() may run and purge
the lock resource
spin_lock(&tmpres->spinlock);
...
spin_unlock(&tmpres->spinlock);
}
}
Signed-off-by: Junxiao Bi <[email protected]>
Cc: Joseph Qi <[email protected]>
Cc: Mark Fasheh <[email protected]>
Cc: Joel Becker <[email protected]>
Cc: <[email protected]>
Signed-off-by: Andrew Morton <[email protected]>
Signed-off-by: Linus Torvalds <[email protected]>
Diffstat (limited to 'lib/cpu-notifier-error-inject.c')
0 files changed, 0 insertions, 0 deletions