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 8903064..5bc08c1 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);
        }
 }