Skip site navigation (1)Skip section navigation (2)
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>