diff options
author | Ard Biesheuvel <ard.biesheuvel@linaro.org> | 2016-10-17 15:05:33 +0100 |
---|---|---|
committer | Johannes Berg <johannes.berg@intel.com> | 2016-10-17 16:14:04 +0200 |
commit | f4a067f9ffca603b45f7e82ddd2ba50e5904cea3 (patch) | |
tree | 7b50496f4eaa8952548eeece1ee28c9045f746d9 /net/mac80211/aes_gmac.h | |
parent | 1d4de2e222b41006007d7dbfce2abfe448217e49 (diff) | |
download | linux-stable-f4a067f9ffca603b45f7e82ddd2ba50e5904cea3.tar.gz linux-stable-f4a067f9ffca603b45f7e82ddd2ba50e5904cea3.tar.bz2 linux-stable-f4a067f9ffca603b45f7e82ddd2ba50e5904cea3.zip |
mac80211: move struct aead_req off the stack
Some crypto implementations (such as the generic CCM wrapper in crypto/)
use scatterlists to map fields of private data in their struct aead_req.
This means these data structures cannot live in the vmalloc area, which
means that they cannot live on the stack (with CONFIG_VMAP_STACK.)
This currently occurs only with the generic software implementation, but
the private data and usage is implementation specific, so move the whole
data structures off the stack into heap by allocating every time we need
to use them.
In addition, take care not to put any of our own stack allocations into
scatterlists. This involves reserving some extra room when allocating the
aead_request structures, and referring to those allocations in the scatter-
lists (while copying the data from the stack before the crypto operation)
Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Diffstat (limited to 'net/mac80211/aes_gmac.h')
-rw-r--r-- | net/mac80211/aes_gmac.h | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/net/mac80211/aes_gmac.h b/net/mac80211/aes_gmac.h index d328204d73a8..32e6442c95be 100644 --- a/net/mac80211/aes_gmac.h +++ b/net/mac80211/aes_gmac.h @@ -11,6 +11,10 @@ #include <linux/crypto.h> +#define GMAC_AAD_LEN 20 +#define GMAC_MIC_LEN 16 +#define GMAC_NONCE_LEN 12 + struct crypto_aead *ieee80211_aes_gmac_key_setup(const u8 key[], size_t key_len); int ieee80211_aes_gmac(struct crypto_aead *tfm, const u8 *aad, u8 *nonce, |