wifi: iwlwifi: mvm: avoid garbage iPN
authorShaul Triebitz <shaul.triebitz@intel.com>
Mon, 5 Feb 2024 19:21:13 +0000 (21:21 +0200)
committerJohannes Berg <johannes.berg@intel.com>
Thu, 8 Feb 2024 14:00:48 +0000 (15:00 +0100)
After waking from D3, we set the iPN given by the firmware.
For some reason, CIPHER_SUITE_AES_CMAC was missed.
That caused copying garbage to the iPN - causing false replays.

(since 'seq' is on the stack, and the iPN from the firmware
was not copied into it, it contains garbage which later is
copied to the iPN key).

Signed-off-by: Shaul Triebitz <shaul.triebitz@intel.com>
Signed-off-by: Miri Korenblit <miriam.rachel.korenblit@intel.com>
Link: https://msgid.link/20240205211151.2be5b35be30f.I99db8700d01092d22a6d76f1fc1bd5916c9df784@changeid
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
drivers/net/wireless/intel/iwlwifi/mvm/d3.c

index 89030647e639ddea857703a9aa9001121033076d..5bc08c1d207a1c331fd0096b6c996a37d18e17f4 100644 (file)
@@ -1866,9 +1866,12 @@ iwl_mvm_d3_set_igtk_bigtk_ipn(const struct iwl_multicast_key_data *key,
                memcpy(seq->aes_gmac.pn, key->ipn, sizeof(seq->aes_gmac.pn));
                break;
        case WLAN_CIPHER_SUITE_BIP_CMAC_256:
+       case WLAN_CIPHER_SUITE_AES_CMAC:
                BUILD_BUG_ON(sizeof(seq->aes_cmac.pn) != sizeof(key->ipn));
                memcpy(seq->aes_cmac.pn, key->ipn, sizeof(seq->aes_cmac.pn));
                break;
+       default:
+               WARN_ON(1);
        }
 }