On 8 March 2014 02:26, <behanw@xxxxxxxxxxxxxxxxxx> wrote:Damn it. I should have seen that too. We had to do that in our related netfilter patch.
diff --git a/net/mac80211/aes_ccm.c b/net/mac80211/aes_ccm.cBad trick with regards to alignment.
index 7c7df47..3317578 100644
--- a/net/mac80211/aes_ccm.c
+++ b/net/mac80211/aes_ccm.c
@@ -23,12 +23,14 @@ void ieee80211_aes_ccm_encrypt(struct crypto_aead *tfm, u8 *b_0, u8 *aad,
u8 *data, size_t data_len, u8 *mic)
{
struct scatterlist assoc, pt, ct[2];
- struct {
- struct aead_request req;
- u8 priv[crypto_aead_reqsize(tfm)];
- } aead_req;
- memset(&aead_req, 0, sizeof(aead_req));
+ char aead_req_data[sizeof(struct aead_request) +
+ crypto_aead_reqsize(tfm) +
+ CRYPTO_MINALIGN] CRYPTO_MINALIGN_ATTR;
+
+ struct aead_request *aead_req = (void *) aead_req_data;
The alignment requirement for struct aead_request is stronger than
what an array of chars may have.