Commit 4edde74e authored by Patrick Caulfield's avatar Patrick Caulfield Committed by Steven Whitehouse

[DLM] Fix spin lock already unlocked bug

I just noticed this message when testing some other changes I'd made to
lowcomms (to use workqueues) but the problem seems to be in the current
git trees too. I'm amazed no-one has seen it.

    BUG: spinlock already unlocked on CPU#1, dlm_recoverd/16868
Signed-Off-By: default avatarPatrick Caulfield <pcaulfie@redhat.com>
Signed-off-by: default avatarSteven Whitehouse <swhiteho@redhat.com>
parent 3fb4a251
...@@ -709,6 +709,7 @@ void *dlm_lowcomms_get_buffer(int nodeid, int len, ...@@ -709,6 +709,7 @@ void *dlm_lowcomms_get_buffer(int nodeid, int len,
if (!con) if (!con)
return NULL; return NULL;
spin_lock(&con->writequeue_lock);
e = list_entry(con->writequeue.prev, struct writequeue_entry, list); e = list_entry(con->writequeue.prev, struct writequeue_entry, list);
if ((&e->list == &con->writequeue) || if ((&e->list == &con->writequeue) ||
(PAGE_CACHE_SIZE - e->end < len)) { (PAGE_CACHE_SIZE - e->end < len)) {
...@@ -747,6 +748,7 @@ void dlm_lowcomms_commit_buffer(void *mh) ...@@ -747,6 +748,7 @@ void dlm_lowcomms_commit_buffer(void *mh)
struct connection *con = e->con; struct connection *con = e->con;
int users; int users;
spin_lock(&con->writequeue_lock);
users = --e->users; users = --e->users;
if (users) if (users)
goto out; goto out;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment