summaryrefslogtreecommitdiffstats
path: root/usr.bin
diff options
context:
space:
mode:
authorwpaul <wpaul@FreeBSD.org>2006-02-04 19:42:49 +0000
committerwpaul <wpaul@FreeBSD.org>2006-02-04 19:42:49 +0000
commit6861e36921baf8f75582b54208ee7f1e93f010cf (patch)
treee41bb0c06f079574642a7ba51f17c52571c2e5b9 /usr.bin
parent1f5e50bc4722f6ef14571e6030274a47d7c1ff5d (diff)
downloadFreeBSD-src-6861e36921baf8f75582b54208ee7f1e93f010cf.zip
FreeBSD-src-6861e36921baf8f75582b54208ee7f1e93f010cf.tar.gz
When ndis_attach() runs, it has to very briefly initialize the card
in order to query the underlying Windows driver for the station address and some other properties. There is a slim chance that the card may receive a packet and indicate it up to us before ndis_attach() can call ndis_halt_nic(). This is bad, because both the softc structure and the ifnet structure aren't fully initialized yet: many pointers are still NULL, so if we make it into ndis_rxeof(), we will panic. To fix this, we need to do the following: - Move the calls to IoAllocateWorkItem() to before the call to ndis_init_nic(). - Move the initialization of the RX DPC and status callback function pointers to before ndis_init_nic() as well. - Modify ndis_rxeof() to check if the IFF_DRV_RUNNING flag is set. If it isn't, we return any supplied NDIS_PACKETs to the NIC without processing them. This fixes a crash than can occur when activating a wireless NIC in close proximity to a very busy wireless network, reported by Ryan Beasley (ryan%^$!ATgoddamnbastard-****!!!DOTorg. MFC after: 3 days
Diffstat (limited to 'usr.bin')
0 files changed, 0 insertions, 0 deletions
OpenPOWER on IntegriCloud