Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 10 Oct 2007 11:53:43 +0200
From:      Max Laier <max@love2party.net>
To:        freebsd-current@freebsd.org
Cc:        rick@snowhite.cis.uoguelph.ca, rwatson@FreeBSD.org, Steven Schlansker <stevenschlansker@berkeley.edu>
Subject:   Re: uma_zalloc_arg with with nonsleepable locks held
Message-ID:  <200710101153.58230.max@love2party.net>
In-Reply-To: <441699AE-B2BB-4D1A-807E-0F02C998854F@berkeley.edu>
References:  <441699AE-B2BB-4D1A-807E-0F02C998854F@berkeley.edu>

next in thread | previous in thread | raw e-mail | index | archive | help
--nextPart2154658.8nJQbGqejf
Content-Type: multipart/mixed;
  boundary="Boundary-01=_sEKDHePXKAnPfdh"
Content-Transfer-Encoding: 7bit
Content-Disposition: inline

--Boundary-01=_sEKDHePXKAnPfdh
Content-Type: text/plain;
  charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable
Content-Disposition: inline

On Wednesday 10 October 2007, Steven Schlansker wrote:
> csup as of yesterday,
> FreeBSD keg.CSUA.Berkeley.EDU 7.0-CURRENT FreeBSD 7.0-CURRENT #0: Tue
> Oct  9 19:13:43 PDT 2007     root@keg.CSUA.Berkeley.EDU:/usr/obj/usr/
> src/sys/GENERIC  i386
>
> I get these lovely messages in dmesg:

The attached should fix that.  I'm not 100% certain this doesn't open a=20
race.  If that is the case, however, it seems that the race was already=20
there.  Thoughts?

> uma_zalloc_arg: zone "mbuf" with the following non-sleepable locks
> held: exclusive sleep mutex nfsd_mtx r =3D 0 (0xc0c06f00) locked @
> /usr/src/ sys/nfsserver/nfs_srvsock.c:654
> KDB: stack backtrace:
> db_trace_self_wrapper
> (c0a9c175,e69b2af8,c078428d,c0a9c538,e69b2b0c,...) at
> db_trace_self_wrapper+0x26
> kdb_backtrace(c0a9c538,e69b2b0c,4,1,0,...) at kdb_backtrace+0x29
> witness_warn(5,0,c0aba40d,c0aa1684,e69b2b1c,...) at witness_warn+0x1cd
> uma_zalloc_arg(c1466d20,e69b2b70,2,8,c4a32b24,...) at uma_zalloc_arg
> +0x34
> nfs_realign(c0c06f00,0,c0ab4064,28e,0,...) at nfs_realign+0x6f
> nfsrv_rcv(c4a5adec,c4a32b00,2,161,0,...) at nfsrv_rcv+0x46a
> nfssvc(c4328210,e69b2cfc,8,e69b2d38,c0b46688,...) at nfssvc+0x6de
> syscall(e69b2d38) at syscall+0x2b3
> Xint0x80_syscall() at Xint0x80_syscall+0x20
> --- syscall (155, FreeBSD ELF32, nfssvc), eip =3D 0x280c4f7b, esp =3D
> 0xbfbfeb2c, ebp =3D 0xbfbfeb48 ---



=2D-=20
/"\  Best regards,                      | mlaier@freebsd.org
\ /  Max Laier                          | ICQ #67774661
 X   http://pf4freebsd.love2party.net/  | mlaier@EFnet
/ \  ASCII Ribbon Campaign              | Against HTML Mail and News

--Boundary-01=_sEKDHePXKAnPfdh
Content-Type: text/x-diff; charset="iso-8859-1"; name="nfs_realign.lock.diff"
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
	filename="nfs_realign.lock.diff"

Index: nfs_srvsock.c
===================================================================
RCS file: /usr/store/mlaier/fcvs/src/sys/nfsserver/nfs_srvsock.c,v
retrieving revision 1.104
diff -u -r1.104 nfs_srvsock.c
--- nfs_srvsock.c	6 Aug 2007 14:26:02 -0000	1.104
+++ nfs_srvsock.c	10 Oct 2007 09:40:52 -0000
@@ -648,19 +648,23 @@
 	    *mpp = recm;
 	    if (slp->ns_flag & SLP_LASTFRAG) {
 		struct nfsrv_rec *rec;
+		struct mbuf *m0;
+
+		m0 = slp->ns_frag;
+		slp->ns_frag = NULL;
 		NFSD_UNLOCK();
 		rec = malloc(sizeof(struct nfsrv_rec), M_NFSRVDESC,
 	            waitflag == M_DONTWAIT ? M_NOWAIT : M_WAITOK);
-		NFSD_LOCK();
-		if (!rec) {
-		    m_freem(slp->ns_frag);
+		if (rec == NULL) {
+		    m_freem(m0);
+		    NFSD_LOCK();
 		} else {
-		    nfs_realign(&slp->ns_frag, 10 * NFSX_UNSIGNED);
+		    nfs_realign(&m0, 10 * NFSX_UNSIGNED);
+		    NFSD_LOCK();
 		    rec->nr_address = NULL;
-		    rec->nr_packet = slp->ns_frag;
+		    rec->nr_packet = m0;
 		    STAILQ_INSERT_TAIL(&slp->ns_rec, rec, nr_link);
 		}
-		slp->ns_frag = NULL;
 	    }
 	}
 }

--Boundary-01=_sEKDHePXKAnPfdh--

--nextPart2154658.8nJQbGqejf
Content-Type: application/pgp-signature; name=signature.asc 
Content-Description: This is a digitally signed message part.

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2.0.4 (FreeBSD)

iD8DBQBHDKE2XyyEoT62BG0RAgrgAJ9PK6j0QqbL9QY346586IGB0ZqBygCeMhE3
bU1dKdt4BGWxIOeiw/Vc2Rw=
=Wzej
-----END PGP SIGNATURE-----

--nextPart2154658.8nJQbGqejf--



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