Date: Thu, 1 Feb 2007 19:04:04 +0200 From: Kostik Belousov <kostikbel@gmail.com> To: Guy Helmer <ghelmer@palisadesys.com> Cc: freebsd-stable@freebsd.org Subject: Re: 6.2 amd64 panic: lockmgr: thread 0xffffff009f9fd000, not exclusive lock holder 0xffffff003961c000 unlocking Message-ID: <20070201170404.GK56152@deviant.kiev.zoral.com.ua> In-Reply-To: <45C21B76.8090301@palisadesys.com> References: <45C0C749.1040300@palisadesys.com> <45C20F00.4010900@palisadesys.com> <20070201163826.GI56152@deviant.kiev.zoral.com.ua> <20070201164631.GJ56152@deviant.kiev.zoral.com.ua> <45C21B76.8090301@palisadesys.com>
next in thread | previous in thread | raw e-mail | index | archive | help
--2WS97oupGEGbYNpW Content-Type: text/plain; charset=us-ascii Content-Disposition: inline Content-Transfer-Encoding: quoted-printable On Thu, Feb 01, 2007 at 10:55:18AM -0600, Guy Helmer wrote: > Kostik Belousov wrote: > >On Thu, Feb 01, 2007 at 06:38:26PM +0200, Kostik Belousov wrote: > > > >Index: fs/procfs/procfs.c > >=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D > >RCS file: /usr/local/arch/ncvs/src/sys/fs/procfs/procfs.c,v > >retrieving revision 1.14 > >diff -u -r1.14 procfs.c > >--- fs/procfs/procfs.c 5 Jun 2006 16:41:27 -0000 1.14 > >+++ fs/procfs/procfs.c 1 Feb 2007 16:44:41 -0000 > >@@ -69,10 +69,17 @@ > > { > > char *fullpath =3D "unknown"; > > char *freepath =3D NULL; > >+ struct vnode *textvp; > >+ int err; > >=20 > >- vn_lock(p->p_textvp, LK_EXCLUSIVE | LK_RETRY, td); > >- vn_fullpath(td, p->p_textvp, &fullpath, &freepath); > >- VOP_UNLOCK(p->p_textvp, 0, td); > >+ textvp =3D p->p_textvp; > >+ VI_LOCK(textvp); > >+ vholdl(textvp); > >+ err =3D vn_lock(textvp, LK_EXCLUSIVE | LK_INTERLOCK, td); > >+ vdrop(textvp); > >+ if (err) > > =20 > Shouldn't that be "if (!err)"? No, vn_lock() returns non-zero on error. > >+ vn_fullpath(td, textvp, &fullpath, &freepath); > >+ VOP_UNLOCK(textvp, 0, td); > > sbuf_printf(sb, "%s", fullpath); > > if (freepath) > > free(freepath, M_TEMP); > > =20 > Thanks for your insight and patch! I would appreciate testing results :).=20 --2WS97oupGEGbYNpW Content-Type: application/pgp-signature Content-Disposition: inline -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.6 (FreeBSD) iD8DBQFFwh2EC3+MBN1Mb4gRAkMxAJ4mdPBMrFU4ECxHw7ghYjJPdktXCQCg8KIK iL3WbsO/O0AYJJmRi6v/yas= =2rz4 -----END PGP SIGNATURE----- --2WS97oupGEGbYNpW--
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20070201170404.GK56152>