From mboxrd@z Thu Jan 1 00:00:00 1970 From: Robert Peterson Date: Tue, 02 Jan 2007 09:01:59 -0600 Subject: [Cluster-devel] [PATCH] dlm: Fix spin lock already unlocked bug In-Reply-To: <459A69A0.5070003@redhat.com> References: <459A69A0.5070003@redhat.com> Message-ID: <459A73E7.5070204@redhat.com> List-Id: To: cluster-devel.redhat.com MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Patrick Caulfield wrote: > >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; > Hi Patrick, For what it's worth: I haven't encountered the messages, and my previous checkouts of lowcomms-tcp.c (2747 and 2876 of the RHEL5 kernels) all seem to have these spin_locks already. I've looked through that code pretty carefully in the recent past and I'm pretty sure the locks match the unlocks in the aforementioned versions. So I'm guessing they were dropped recently by accident. Regards, Bob Peterson