Re: [PATCH v2] mac80211: LLVMLinux: Remove VLAIS usage from mac80211
From: Stanislaw Gruszka <hidden>
Date: 2014-03-08 15:05:16
Also in:
linux-wireless, lkml
On Fri, Mar 07, 2014 at 06:15:43PM -0800, Behan Webster wrote:
On 03/07/14 17:56, Joe Perches wrote:quoted
On Fri, 2014-03-07 at 17:26 -0800, behanw@converseincode.com wrote:quoted
From: Jan-Simon Möller <redacted> Replaced the use of a Variable Length Array In Struct (VLAIS) with a C99 compliant equivalent. This is the original VLAIS struct.[]quoted
diff --git a/net/mac80211/aes_ccm.c b/net/mac80211/aes_ccm.c[]quoted
@@ -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;Can this be a too large amount of stack? Is crypto_aead_reqsize() limited to < ~1k? Perhaps it'd be better to use kzalloc for this or another reserved poolNo more stack being used than with the the original code. The stack memory use is identical.
Could you explain that? It looks like aead_req_data can be bigger than original struct aead_req up to CRYPTO_MINALIGN bytes. IOW adding CRYPTO_MINALIGN to size seems unneeded as aead_request->__ctx alignment requirement should by assured by proper sizeof(struct aead_request). Besides, why not add VLAIS feature to llvm instead of fixing all programs that use it? Stanislaw