Commit 01fba20b authored by Jouni Malinen's avatar Jouni Malinen Committed by Johannes Berg

mac80211: Allocate a sync skcipher explicitly for FILS AEAD

The skcipher could have been of the async variant which may return from
skcipher_encrypt() with -EINPROGRESS after having queued the request.
The FILS AEAD implementation here does not have code for dealing with
that possibility, so allocate a sync cipher explicitly to avoid
potential issues with hardware accelerators.

This is based on the patch sent out by Ard.

Fixes: 39404fee ("mac80211: FILS AEAD protection for station mode association frames")
Reported-by: default avatarArd Biesheuvel <ard.biesheuvel@linaro.org>
Signed-off-by: default avatarJouni Malinen <jouni@qca.qualcomm.com>
Signed-off-by: default avatarJohannes Berg <johannes.berg@intel.com>
parent e479ab65
...@@ -124,7 +124,7 @@ static int aes_siv_encrypt(const u8 *key, size_t key_len, ...@@ -124,7 +124,7 @@ static int aes_siv_encrypt(const u8 *key, size_t key_len,
/* CTR */ /* CTR */
tfm2 = crypto_alloc_skcipher("ctr(aes)", 0, 0); tfm2 = crypto_alloc_skcipher("ctr(aes)", 0, CRYPTO_ALG_ASYNC);
if (IS_ERR(tfm2)) { if (IS_ERR(tfm2)) {
kfree(tmp); kfree(tmp);
return PTR_ERR(tfm2); return PTR_ERR(tfm2);
...@@ -183,7 +183,7 @@ static int aes_siv_decrypt(const u8 *key, size_t key_len, ...@@ -183,7 +183,7 @@ static int aes_siv_decrypt(const u8 *key, size_t key_len,
/* CTR */ /* CTR */
tfm2 = crypto_alloc_skcipher("ctr(aes)", 0, 0); tfm2 = crypto_alloc_skcipher("ctr(aes)", 0, CRYPTO_ALG_ASYNC);
if (IS_ERR(tfm2)) if (IS_ERR(tfm2))
return PTR_ERR(tfm2); return PTR_ERR(tfm2);
/* K2 for CTR */ /* K2 for CTR */
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment