⬢ DragonFlyBSD Kernel Audit
DF-5262 / fix.diff
← back to finding ↓ download raw
--- a/sys/bus/u4b/wlan/if_mtw.c
+++ b/sys/bus/u4b/wlan/if_mtw.c
@@ -1934,11 +1934,13 @@
 
 	i = MTW_CMDQ_GET(&sc->cmdq_store);
 	MTW_DPRINTF(sc, MTW_DEBUG_KEY, "cmdq_store=%d\n", i);
-	sc->cmdq[i].func = mtw_key_set_cb;
 	sc->cmdq[i].arg0 = NULL;
 	sc->cmdq[i].arg1 = vap;
 	sc->cmdq[i].k = k;
 	IEEE80211_ADDR_COPY(sc->cmdq[i].mac, k->wk_macaddr);
+	/* publish the entry only once it is fully populated */
+	cpu_sfence();
+	sc->cmdq[i].func = mtw_key_set_cb;
 	ieee80211_runtask(ic, &sc->cmdq_task);
 
 	/*