Author: imp
Date: Mon Apr 20 15:19:54 2009
New Revision: 191321
URL: http://svn.freebsd.org/changeset/base/191321

Log:
  Sometimes we can call ed_detach() before the mtx has been initialized.
  Avoid it if it hasn't been initialized.

Modified:
  head/sys/dev/ed/if_ed.c

Modified: head/sys/dev/ed/if_ed.c
==============================================================================
--- head/sys/dev/ed/if_ed.c     Mon Apr 20 15:15:24 2009        (r191320)
+++ head/sys/dev/ed/if_ed.c     Mon Apr 20 15:19:54 2009        (r191321)
@@ -373,7 +373,8 @@ ed_detach(device_t dev)
        struct ed_softc *sc = device_get_softc(dev);
        struct ifnet *ifp = sc->ifp;
 
-       ED_ASSERT_UNLOCKED(sc);
+       if (mtx_initialized(ED_MUTEX(sc)))
+               ED_ASSERT_UNLOCKED(sc);
        if (ifp) {
                ED_LOCK(sc);
                if (bus_child_present(dev))
@@ -388,7 +389,8 @@ ed_detach(device_t dev)
        ed_release_resources(dev);
        if (sc->miibus)
                device_delete_child(dev, sc->miibus);
-       ED_LOCK_DESTROY(sc);
+       if (mtx_initialized(ED_MUTEX(sc)))
+               ED_LOCK_DESTROY(sc);
        bus_generic_detach(dev);
        return (0);
 }
_______________________________________________
svn-src-all@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "svn-src-all-unsubscr...@freebsd.org"

Reply via email to