From owner-cvs-all Sat Feb 2 18:13:48 2002 Delivered-To: cvs-all@freebsd.org Received: from apollo.backplane.com (apollo.backplane.com [216.240.41.2]) by hub.freebsd.org (Postfix) with ESMTP id B7D7A37B416; Sat, 2 Feb 2002 18:13:42 -0800 (PST) Received: (from dillon@localhost) by apollo.backplane.com (8.11.6/8.9.1) id g132DfZ41859; Sat, 2 Feb 2002 18:13:41 -0800 (PST) (envelope-from dillon) Date: Sat, 2 Feb 2002 18:13:41 -0800 (PST) From: Matthew Dillon Message-Id: <200202030213.g132DfZ41859@apollo.backplane.com> To: Kirk McKusick Cc: "Jacques A. Vidrine" , Dag-Erling Smorgrav , se@FreeBSD.ORG, cvs-committers@FreeBSD.ORG, cvs-all@FreeBSD.ORG Subject: Re: cvs commit: src/sys/kern vfs_subr.c References: <200202020149.g121nJI67647@freefall.freebsd.org> <20020202132721.A65496@hellblazer.nectar.cc> Sender: owner-cvs-all@FreeBSD.ORG Precedence: bulk List-ID: List-Archive: (Web Archive) List-Help: (List Instructions) List-Subscribe: List-Unsubscribe: X-Loop: FreeBSD.ORG Kirk, is this something I should MFC? It looks like it could effect -stable as well. This bug looks like it has been present since 1997. -Matt :On Sat, Feb 02, 2002 at 08:22:04PM +0100, Dag-Erling Smorgrav wrote: :> Kirk McKusick writes: :> > Log: :> > In the routines vrele() and vput(), we must lock the vnode and :> > call VOP_INACTIVE before placing the vnode back on the free list. :> > Otherwise there is a race condition on SMP machines between :> > getnewvnode() locking the vnode to reclaim it and vrele() :> > locking the vnode to inactivate it. This window of vulnerability :> > becomes exaggerated in the presence of filesystems that have :> > been suspended as the inactive routine may need to temporarily :> > release the lock on the vnode to avoid deadlock with the syncer :> > process. :> :> I think this might be the cause of the panic some people saw in procfs :> a couple of months ago; getvnode() would sometimes return a vnode that :> had already been reclaimed, and fstatfs() would dereference a NULL :> pointer. This was "fixed" by adding an extra check to fstatfs() in :> rev 1.216 of vfs_syscalls.c; this check is probably unnecessary now. :... To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe cvs-all" in the body of the message