patch "staging: vt6656: Fix pairwise key entry save." added to staging-linus
Subsystems (2)
This is a note to let you know that I've just added the patch titled
staging: vt6656: Fix pairwise key entry save.
to my staging git tree which can be found at
git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/staging.git
in the staging-linus branch.
The patch will show up in the next release of the linux-next tree (usually sometime within the next 24 hours during the week.)
The patch will hopefully also be merged in Linus's tree for the next -rc kernel release.
If you have any questions about this process, please let me know.
From 0b59f10b1d8fe8d50944f21f5d403df9303095a8 Mon Sep 17 00:00:00 2001
From: Malcolm Priestley <[email protected]>
Date: Sat, 18 Apr 2020 22:01:49 +0100
Subject: staging: vt6656: Fix pairwise key entry save.
The problem is that the group key was saved as VNT_KEY_DEFAULTKEY was over written by the VNT_KEY_GROUP_ADDRESS index.
mac80211 could not clear the mac_addr in the default key.
The VNT_KEY_DEFAULTKEY is not necesscary so remove it and set as VNT_KEY_GROUP_ADDRESS.
mac80211 can clear any key using vnt_mac_disable_keyentry.
--- drivers/staging/vt6656/key.c | 14 +++----------- drivers/staging/vt6656/main_usb.c | 6 +++++- 2 files changed, 8 insertions(+), 12 deletions(-)
drivers/staging/vt6656/key.c +3 -11
@@ -83,9 +83,6 @@ static int vnt_set_keymode(struct ieee80211_hw *hw, u8 *mac_addr,case VNT_KEY_PAIRWISE : key_mode |= mode; key_inx =4 ; -/* Don't save entry for pairwise key for station mode */ -if (priv->op_mode ==NL80211_IFTYPE_STATION ) -clear_bit (entry, &priv->key_entry_inuse);break ;default :return -EINVAL ;
@@ -109,7 +106,6 @@ static int vnt_set_keymode(struct ieee80211_hw *hw, u8 *mac_addr,int vnt_set_keys (struct ieee80211_hw *hw,struct ieee80211_sta *sta,struct ieee80211_vif *vif,struct ieee80211_key_conf *key) { -struct ieee80211_bss_conf *conf = &vif->bss_conf;struct vnt_private *priv = hw->priv;u8 *mac_addr =NULL ;u8 key_dec_mode =0 ;
@@ -154,16 +150,12 @@ int vnt_set_keys(struct ieee80211_hw *hw, struct ieee80211_sta *sta,return -EOPNOTSUPP ; } -if (key->flags &IEEE80211_KEY_FLAG_PAIRWISE ) { +if (key->flags &IEEE80211_KEY_FLAG_PAIRWISE )vnt_set_keymode (hw, mac_addr, key,VNT_KEY_PAIRWISE , key_dec_mode, true); - }else { -vnt_set_keymode (hw, mac_addr, key,VNT_KEY_DEFAULTKEY , +else +vnt_set_keymode (hw, mac_addr, key,VNT_KEY_GROUP_ADDRESS , key_dec_mode, true); -vnt_set_keymode (hw, (u8 *)conf->bssid, key, -VNT_KEY_GROUP_ADDRESS , key_dec_mode, true); - } -return 0 ; }
drivers/staging/vt6656/main_usb.c +5 -1
@@ -855,8 +855,12 @@ static int vnt_set_key(struct ieee80211_hw *hw, enum set_key_cmd cmd,case SET_KEY :return vnt_set_keys (hw, sta, vif, key);case DISABLE_KEY : -if (test_bit (key->hw_key_idx, &priv->key_entry_inuse)) +if (test_bit (key->hw_key_idx, &priv->key_entry_inuse)) {clear_bit (key->hw_key_idx, &priv->key_entry_inuse); + +vnt_mac_disable_keyentry (priv, key->hw_key_idx); + } +default :break ; }
Signature · 1 line
2.26.2