summaryrefslogtreecommitdiffstats
path: root/sys/dev/ntb
diff options
context:
space:
mode:
authorcarl <carl@FreeBSD.org>2013-09-05 23:12:58 +0000
committercarl <carl@FreeBSD.org>2013-09-05 23:12:58 +0000
commit679ed329d3d0d827cc6845cf5e1adb03dec09eab (patch)
treea692ed9049f0a67a8e862b89a3a0840e8a480c27 /sys/dev/ntb
parent5b65301bba2c9d1eb34118038ebddd68ae2d6826 (diff)
downloadFreeBSD-src-679ed329d3d0d827cc6845cf5e1adb03dec09eab.zip
FreeBSD-src-679ed329d3d0d827cc6845cf5e1adb03dec09eab.tar.gz
Only tear down interface and transport if they've been successfully setup.
Approved by: jimharris Sponsored by: Intel
Diffstat (limited to 'sys/dev/ntb')
-rw-r--r--sys/dev/ntb/if_ntb/if_ntb.c17
1 files changed, 11 insertions, 6 deletions
diff --git a/sys/dev/ntb/if_ntb/if_ntb.c b/sys/dev/ntb/if_ntb/if_ntb.c
index 510bd75..b74e6c2 100644
--- a/sys/dev/ntb/if_ntb/if_ntb.c
+++ b/sys/dev/ntb/if_ntb/if_ntb.c
@@ -334,14 +334,19 @@ ntb_setup_interface()
static int
ntb_teardown_interface()
{
- struct ifnet *ifp = net_softc.ifp;
- ntb_transport_link_down(net_softc.qp);
+ if (net_softc.qp != NULL)
+ ntb_transport_link_down(net_softc.qp);
- ether_ifdetach(ifp);
- if_free(ifp);
- ntb_transport_free_queue(net_softc.qp);
- ntb_transport_free(&net_softc);
+ if (net_softc.ifp != NULL) {
+ ether_ifdetach(net_softc.ifp);
+ if_free(net_softc.ifp);
+ }
+
+ if (net_softc.qp != NULL) {
+ ntb_transport_free_queue(net_softc.qp);
+ ntb_transport_free(&net_softc);
+ }
return (0);
}
OpenPOWER on IntegriCloud