mac80211: fix CMAC races
Just like TKIP and CCMP, CMAC has the PN race. It might not actually be possible to hit it now since there aren't multiple ACs for management frames, but fix it anyway. Also move scratch buffers onto the stack. Signed-off-by: Johannes Berg <johannes.berg@intel.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
This commit is contained in:

committed by
John W. Linville

parent
aba83a0b30
commit
75396ae6d4
@@ -78,7 +78,6 @@ KEY_OPS(algorithm);
|
||||
static ssize_t key_tx_spec_read(struct file *file, char __user *userbuf,
|
||||
size_t count, loff_t *ppos)
|
||||
{
|
||||
const u8 *tpn;
|
||||
u64 pn;
|
||||
char buf[20];
|
||||
int len;
|
||||
@@ -101,10 +100,10 @@ static ssize_t key_tx_spec_read(struct file *file, char __user *userbuf,
|
||||
(u8)(pn >> 16), (u8)(pn >> 8), (u8)pn);
|
||||
break;
|
||||
case WLAN_CIPHER_SUITE_AES_CMAC:
|
||||
tpn = key->u.aes_cmac.tx_pn;
|
||||
pn = atomic64_read(&key->u.aes_cmac.tx_pn);
|
||||
len = scnprintf(buf, sizeof(buf), "%02x%02x%02x%02x%02x%02x\n",
|
||||
tpn[0], tpn[1], tpn[2], tpn[3], tpn[4],
|
||||
tpn[5]);
|
||||
(u8)(pn >> 40), (u8)(pn >> 32), (u8)(pn >> 24),
|
||||
(u8)(pn >> 16), (u8)(pn >> 8), (u8)pn);
|
||||
break;
|
||||
default:
|
||||
return 0;
|
||||
|
Reference in New Issue
Block a user