Re: [PATCH] key: Convert big_key payload.data to struct

From: Eric Biggers
Date: Tue May 09 2017 - 17:45:34 EST


On Tue, May 09, 2017 at 08:24:18AM +0100, David Howells wrote:
> Eric Biggers <ebiggers3@xxxxxxxxx> wrote:
>
> > It probably would be easier to kmalloc() this struct and store a pointer to
> > it in key->payload.data[0]
>
> Yeah, but it's a waste of resources if you don't have to do it.
>
> David

Yes, but it seems very much like a micro-optimization, which isn't helpful when
the code contains undefined behavior and is creating problems. This is the
*big* key type, after all; shouldn't the amount of data in the key normally be
large enough to make a kmalloc() of 24 bytes insignificant?

And besides, I expect that most users don't even use the big_keys feature. If
we actually want to avoid wasting resources that aren't used, we shouldn't
allocate the crypto_rng and crypto_skcipher until someone tries to create a
big_key. (Currently they're allocated unconditionally in big_key_init().)

- Eric