svn commit: r245554 - head/sys/dev/ath
Adrian Chadd
adrian at FreeBSD.org
Thu Jan 17 16:26:40 UTC 2013
Author: adrian
Date: Thu Jan 17 16:26:40 2013
New Revision: 245554
URL: http://svnweb.freebsd.org/changeset/base/245554
Log:
Add a quick work-around if ath_beacon_config() to not die if it's called
when an interface is going down.
Right now it's quite possible (but very unlikely!) that ath_reset()
or similar is called, leading to a beacon config call, in parallel with
the last VAP being destroyed.
This likely should be fixed by making sure the bmiss/bstuck/watchdog
taskqueues are canceled whenever the last VAP is destroyed.
Modified:
head/sys/dev/ath/if_ath_beacon.c
Modified: head/sys/dev/ath/if_ath_beacon.c
==============================================================================
--- head/sys/dev/ath/if_ath_beacon.c Thu Jan 17 16:11:38 2013 (r245553)
+++ head/sys/dev/ath/if_ath_beacon.c Thu Jan 17 16:26:40 2013 (r245554)
@@ -705,6 +705,16 @@ ath_beacon_config(struct ath_softc *sc,
if (vap == NULL)
vap = TAILQ_FIRST(&ic->ic_vaps); /* XXX */
+ /*
+ * Just ensure that we aren't being called when the last
+ * VAP is destroyed.
+ */
+ if (vap == NULL) {
+ device_printf(sc->sc_dev, "%s: called with no VAPs\n",
+ __func__);
+ return;
+ }
+
ni = ieee80211_ref_node(vap->iv_bss);
/* extract tstamp from last beacon and convert to TU */
More information about the svn-src-head
mailing list