]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
wifi: iwlwifi: mvm: don't set replay counters to 0xff
authorJohannes Berg <johannes.berg@intel.com>
Tue, 6 Feb 2024 16:02:09 +0000 (18:02 +0200)
committerSasha Levin <sashal@kernel.org>
Tue, 26 Mar 2024 22:21:18 +0000 (18:21 -0400)
[ Upstream commit d5bd4041cd70faf26fc9a54bd6f172537bbe77f3 ]

The firmware (later) actually uses the values even for keys
that are invalid as far as the host is concerned, later in
rekeying, and then only sets the low 48 bits since the PNs
are only 48 bits over the air. It does, however, compare the
full 64 bits later, obviously causing problems.

Remove the memset and use kzalloc instead to avoid any old
heap data leaking to the firmware. We already init all the
other fields in the struct anyway. This leaves the data set
to zero for any unused fields, so the firmware can look at
them safely even if they're not used right now.

Fixes: 79e561f0f05a ("iwlwifi: mvm: d3: implement RSC command version 5")
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Signed-off-by: Miri Korenblit <miriam.rachel.korenblit@intel.com>
Link: https://msgid.link/20240206175739.462101146fef.I10f3855b99417af4247cff04af78dcbc6cb75c9c@changeid
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
drivers/net/wireless/intel/iwlwifi/mvm/d3.c

index 27756e47f7caf3f24fcedb8d2e8d9d0f83af068b..c4c62bcbe67dedb26b51903e87b39556ec54c254 100644 (file)
@@ -462,12 +462,10 @@ static int iwl_mvm_wowlan_config_rsc_tsc(struct iwl_mvm *mvm,
                struct wowlan_key_rsc_v5_data data = {};
                int i;
 
-               data.rsc = kmalloc(sizeof(*data.rsc), GFP_KERNEL);
+               data.rsc = kzalloc(sizeof(*data.rsc), GFP_KERNEL);
                if (!data.rsc)
                        return -ENOMEM;
 
-               memset(data.rsc, 0xff, sizeof(*data.rsc));
-
                for (i = 0; i < ARRAY_SIZE(data.rsc->mcast_key_id_map); i++)
                        data.rsc->mcast_key_id_map[i] =
                                IWL_MCAST_KEY_MAP_INVALID;