From mboxrd@z Thu Jan 1 00:00:00 1970 From: Patrick Caulfield Date: Tue, 02 Jan 2007 14:18:08 +0000 Subject: [Cluster-devel] [PATCH] dlm: Fix spin lock already unlocked bug Message-ID: <459A69A0.5070003@redhat.com> List-Id: To: cluster-devel.redhat.com MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit >From the "how the hell did that get in there" collection. 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 Please check this before committing it someone (everyone?), in case I'm hallucinating after all the christmas punch ;-) Signed-Off-By: Patrick Caulfield --- lowcomms-tcp.c 2007-01-02 13:51:40.000000000 +0000 +++ lowcomms-tcp.c.new 2007-01-02 14:01:16.000000000 +0000 @@ -709,6 +709,7 @@ if (!con) return NULL; + spin_lock(&con->writequeue_lock); e = list_entry(con->writequeue.prev, struct writequeue_entry, list); if ((&e->list == &con->writequeue) || (PAGE_CACHE_SIZE - e->end < len)) { @@ -747,6 +748,7 @@ struct connection *con = e->con; int users; + spin_lock(&con->writequeue_lock); users = --e->users; if (users) goto out;