summaryrefslogtreecommitdiffstats
path: root/sys/dev/if_ndis
diff options
context:
space:
mode:
authorweongyo <weongyo@FreeBSD.org>2008-05-30 07:17:51 +0000
committerweongyo <weongyo@FreeBSD.org>2008-05-30 07:17:51 +0000
commitf7fc034d213ec17f1051950b8c6e9701ef31959e (patch)
tree213b1813b333d6550220584313db3ac1ca9ff695 /sys/dev/if_ndis
parent1ea90a0deae5bb3d69f5f91d039927b404236885 (diff)
downloadFreeBSD-src-f7fc034d213ec17f1051950b8c6e9701ef31959e.zip
FreeBSD-src-f7fc034d213ec17f1051950b8c6e9701ef31959e.tar.gz
Fix a panic that it's occurred when NDIS init handler returned a error
by unknown reasons. In this case, sc->ifp is still NULL so it will cause a page fault during calling ndis_detach()
Diffstat (limited to 'sys/dev/if_ndis')
-rw-r--r--sys/dev/if_ndis/if_ndis.c13
1 files changed, 8 insertions, 5 deletions
diff --git a/sys/dev/if_ndis/if_ndis.c b/sys/dev/if_ndis/if_ndis.c
index 692473f..1329965 100644
--- a/sys/dev/if_ndis/if_ndis.c
+++ b/sys/dev/if_ndis/if_ndis.c
@@ -996,15 +996,18 @@ ndis_detach(dev)
sc = device_get_softc(dev);
NDIS_LOCK(sc);
ifp = sc->ifp;
- ifp->if_flags &= ~IFF_UP;
+ if (ifp != NULL)
+ ifp->if_flags &= ~IFF_UP;
if (device_is_attached(dev)) {
NDIS_UNLOCK(sc);
ndis_stop(sc);
- if (sc->ndis_80211)
- ieee80211_ifdetach(ifp->if_l2com);
- else
- ether_ifdetach(ifp);
+ if (ifp != NULL) {
+ if (sc->ndis_80211)
+ ieee80211_ifdetach(ifp->if_l2com);
+ else
+ ether_ifdetach(ifp);
+ }
} else
NDIS_UNLOCK(sc);
OpenPOWER on IntegriCloud