Date: Thu, 13 Mar 2003 17:16:27 +0900 (JST) From: Tod McQuillin <devin@spamcop.net> To: John Baldwin <jhb@FreeBSD.org> Cc: freebsd-current@freebsd.org Subject: RE: lock order reversal? current with tl ethernet Message-ID: <20030313092358.Y61843@glass.pun-pun.prv> In-Reply-To: <XFMail.20030312104914.jhb@FreeBSD.org> References: <XFMail.20030312104914.jhb@FreeBSD.org>
next in thread | previous in thread | raw e-mail | index | archive | help
On Wed, 12 Mar 2003, John Baldwin wrote: > It's holding the lock across bus_setup_intr(). You can try the > following patch: > > Index: if_tl.c > =================================================================== > RCS file: /usr/cvs/src/sys/pci/if_tl.c,v > retrieving revision 1.74 > diff -u -r1.74 if_tl.c > --- if_tl.c 19 Feb 2003 05:47:41 -0000 1.74 > +++ if_tl.c 12 Mar 2003 15:20:47 -0000 > @@ -1138,12 +1138,11 @@ > > if (t->tl_name == NULL) { > device_printf(dev, "unknown device!?\n"); > - goto fail; > device_printf(dev, "unknown device!?\n"); > - goto fail; > RCS file: /usr/cvs/src/sys/pci/if_tl.c,v > retrieving revision 1.74 > diff -u -r1.74 if_tl.c > --- if_tl.c 19 Feb 2003 05:47:41 -0000 1.74 > +++ if_tl.c 12 Mar 2003 15:20:47 -0000 > @@ -1138,12 +1138,11 @@ > > if (t->tl_name == NULL) { > device_printf(dev, "unknown device!?\n"); > - goto fail; > + return (ENXIO); > } > > mtx_init(&sc->tl_mtx, device_get_nameunit(dev), MTX_NETWORK_LOCK, > MTX_DEF | MTX_RECURSE); > - TL_LOCK(sc); > > /* > * Map control/status registers. > @@ -1348,12 +1347,12 @@ > /* > * Call MI attach routine. > */ Thanks John -- This patch looks a little bit mangled to me. It has two sections talking about line 1138 of if_tl.c (with two different changes) and a section talking about line 1348 (with no changes). I assumed cut and paste error and proceeded along the same lines with this patch instead: Index: if_tl.c =================================================================== RCS file: /usr/src/cvs-repo/src/sys/pci/if_tl.c,v retrieving revision 1.74 diff -u -r1.74 if_tl.c --- if_tl.c 19 Feb 2003 05:47:41 -0000 1.74 +++ if_tl.c 13 Mar 2003 00:26:20 -0000 @@ -1138,12 +1138,11 @@ if (t->tl_name == NULL) { device_printf(dev, "unknown device!?\n"); - goto fail; + return (ENXIO); } mtx_init(&sc->tl_mtx, device_get_nameunit(dev), MTX_NETWORK_LOCK, MTX_DEF | MTX_RECURSE); - TL_LOCK(sc); /* * Map control/status registers. @@ -1349,11 +1348,9 @@ * Call MI attach routine. */ ether_ifattach(ifp, sc->arpcom.ac_enaddr); - TL_UNLOCK(sc); return(0); fail: - TL_UNLOCK(sc); mtx_destroy(&sc->tl_mtx); return(error); } This has made the messages go away -- thanks for that! If this is a correct fix, should I submit a PR to have it committed? -- Tod McQuillin To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-current" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20030313092358.Y61843>