Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 28 Dec 2004 03:17:07 +0000
From:      Darren Reed <darrenr@hub.freebsd.org>
To:        Alan Cox <alc@cs.rice.edu>
Cc:        "M. Warner Losh" <imp@bsdimp.com>
Subject:   Re: cvs commit: src/sys/contrib/ipfilter/netinet ip_auth.c
Message-ID:  <20041228031707.GA38011@hub.freebsd.org>
In-Reply-To: <20041227204846.GC15591@noel.cs.rice.edu>
References:  <20041226165927.GA18879@hub.freebsd.org> <Pine.BSF.4.53.0412261707210.68472@e0-0.zab2.int.zabbadoz.net> <20041226182537.GB20920@hub.freebsd.org> <20041226.222435.52824948.imp@bsdimp.com> <20041227054931.GC20920@hub.freebsd.org> <20041227204846.GC15591@noel.cs.rice.edu>

next in thread | previous in thread | raw e-mail | index | archive | help
On Mon, Dec 27, 2004 at 02:48:46PM -0600, Alan Cox wrote:
> Darren,
> 
> Based upon a quick look at the above URL, I would say that the problem
> is that you are acquiring an sx lock after a mutex is held.

Yes, that is what I thought the problem was too.

> That is not allowed.

Well, it should be.

> More generally, an sx lock is termed a "sleepable" lock
> and a mutex is not; all desired sleepable locks must be acquired
> before any non-sleepable locks are acquired.  Witness enforces this
> prohibition, but perhaps causes confusion by calling it a reversal.

What can I say that I haven't already ?
This is a nonsense rule and I'm quite happy that it isn't enforced at
all.  The assumption by someone that all of these scenarios lead to
deadlocks is false.

I imagine it is part of why things like the IFNET_*LOCK macros use mtx
rather than sx.  On systems where the interface list is of non-trivial
size, I imagine this would have a measurable impact.

Perhaps the most stupid realisation from this has been that IPFilter
code gets called with a UDP mutex of some sort held.  Like WTF ?

Darren



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20041228031707.GA38011>