Avoid trying to remove keys if the station is not active in iwm firmware.
authorstsp <stsp@openbsd.org>
Sat, 2 Sep 2023 09:02:18 +0000 (09:02 +0000)
committerstsp <stsp@openbsd.org>
Sat, 2 Sep 2023 09:02:18 +0000 (09:02 +0000)
Same fix as applied to iwx(4) in March. Since iwm(4) does not use a task
for key installation and removal the same race might not manifest here.
However, trying to delete a key while the station is not in firmware
is wrong in any case. And this code might get moved into a task later.

sys/dev/pci/if_iwm.c

index 06a8a64..fc4bc1a 100644 (file)
@@ -1,4 +1,4 @@
-/*     $OpenBSD: if_iwm.c,v 1.409 2023/09/02 08:57:46 stsp Exp $       */
+/*     $OpenBSD: if_iwm.c,v 1.410 2023/09/02 09:02:18 stsp Exp $       */
 
 /*
  * Copyright (c) 2014, 2016 genua gmbh <info@genua.de>
@@ -9206,6 +9206,9 @@ iwm_delete_key(struct ieee80211com *ic, struct ieee80211_node *ni,
                return;
        }
 
+       if ((sc->sc_flags & IWM_FLAG_STA_ACTIVE) == 0)
+               return;
+
        if (!isset(sc->sc_ucode_api, IWM_UCODE_TLV_API_TKIP_MIC_KEYS))
                return iwm_delete_key_v1(ic, ni, k);