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>
