diff options
author | carl <carl@FreeBSD.org> | 2013-09-05 23:12:58 +0000 |
---|---|---|
committer | carl <carl@FreeBSD.org> | 2013-09-05 23:12:58 +0000 |
commit | 679ed329d3d0d827cc6845cf5e1adb03dec09eab (patch) | |
tree | a692ed9049f0a67a8e862b89a3a0840e8a480c27 /sys/dev/ntb | |
parent | 5b65301bba2c9d1eb34118038ebddd68ae2d6826 (diff) | |
download | FreeBSD-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.c | 17 |
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); } |