You're not the only person to ask for this. I've got one already coded up based on suggestions from tglx.
On 09/05/2014 06:58 PM, behanw@xxxxxxxxxxxxxxxxxx wrote:
From: VinÃcius Tinti <viniciustinti@xxxxxxxxx>We copied this from one of the other crypto api users, and I'm sure
Replaced the use of a Variable Length Array In Struct (VLAIS) with a C99
compliant equivalent. This is the original VLAIS struct.
struct {
struct shash_desc shash;
char ctx[crypto_shash_descsize(tfm)];
} desc;
This patch instead allocates the appropriate amount of memory using an char
array.
The new code can be compiled with both gcc and clang.
struct shash_desc contains a flexible array member member ctx declared with
CRYPTO_MINALIGN_ATTR, so sizeof(struct shash_desc) aligns the beginning
of the array declared after struct shash_desc with long long.
No trailing padding is required because it is not a struct type that can
be used in an array.
The CRYPTO_MINALIGN_ATTR is required so that desc is aligned with long long
as would be the case for a struct containing a member with
CRYPTO_MINALIGN_ATTR.
cooking up all these patches was not a great way to your afternoon.
But, can I talk you into making a helper macro of some kind for this and
putting it into the crypto api headers? Honestly this setup seems
really error prone.