From owner-cvs-all@FreeBSD.ORG Tue Dec 28 03:17:07 2004 Return-Path: Delivered-To: cvs-all@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 680) id 2AE6816A4CF; Tue, 28 Dec 2004 03:17:07 +0000 (GMT) Date: Tue, 28 Dec 2004 03:17:07 +0000 From: Darren Reed To: Alan Cox Message-ID: <20041228031707.GA38011@hub.freebsd.org> References: <20041226165927.GA18879@hub.freebsd.org> <20041226182537.GB20920@hub.freebsd.org> <20041226.222435.52824948.imp@bsdimp.com> <20041227054931.GC20920@hub.freebsd.org> <20041227204846.GC15591@noel.cs.rice.edu> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20041227204846.GC15591@noel.cs.rice.edu> User-Agent: Mutt/1.4.2.1i cc: src-committers@freebsd.org cc: cvs-src@freebsd.org cc: scottl@freebsd.org cc: cvs-all@freebsd.org cc: darrenr@freebsd.org cc: bzeeb-lists@lists.zabbadoz.net cc: "M. Warner Losh" Subject: Re: cvs commit: src/sys/contrib/ipfilter/netinet ip_auth.c X-BeenThere: cvs-all@freebsd.org X-Mailman-Version: 2.1.1 Precedence: list List-Id: CVS commit messages for the entire tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 28 Dec 2004 03:17:07 -0000 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