summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRoger Pau Monné <royger@FreeBSD.org>2018-06-26 14:07:11 +0000
committerRoger Pau Monné <royger@FreeBSD.org>2018-06-26 14:07:11 +0000
commitd9b664fd459bee3fe730feec336be9f7f5f51dc2 (patch)
treed0c59f5c44df989dfdd201b93b93729d13cb9288
parent76e944b7a50f4df9bee8130f12437d7679f725bd (diff)
Notes
-rw-r--r--sys/dev/xen/netback/netback.c6
1 files changed, 3 insertions, 3 deletions
diff --git a/sys/dev/xen/netback/netback.c b/sys/dev/xen/netback/netback.c
index 0d882a5ab77a..e9b8c1add7e4 100644
--- a/sys/dev/xen/netback/netback.c
+++ b/sys/dev/xen/netback/netback.c
@@ -662,6 +662,7 @@ xnb_disconnect(struct xnb_softc *xnb)
mtx_lock(&xnb->rx_lock);
mtx_unlock(&xnb->rx_lock);
+ mtx_lock(&xnb->sc_lock);
/* Free malloc'd softc member variables */
if (xnb->bridge != NULL) {
free(xnb->bridge, M_XENSTORE);
@@ -689,6 +690,8 @@ xnb_disconnect(struct xnb_softc *xnb)
sizeof(struct xnb_ring_config));
xnb->flags &= ~XNBF_RING_CONNECTED;
+ mtx_unlock(&xnb->sc_lock);
+
return (0);
}
@@ -1066,18 +1069,15 @@ xnb_shutdown(struct xnb_softc *xnb)
if_free(xnb->xnb_ifp);
xnb->xnb_ifp = NULL;
}
- mtx_lock(&xnb->sc_lock);
xnb_disconnect(xnb);
- mtx_unlock(&xnb->sc_lock);
if (xenbus_get_state(xnb->dev) < XenbusStateClosing)
xenbus_set_state(xnb->dev, XenbusStateClosing);
mtx_lock(&xnb->sc_lock);
xnb->flags &= ~XNBF_IN_SHUTDOWN;
-
/* Indicate to xnb_detach() that is it safe to proceed. */
wakeup(xnb);