Eric Biggers <ebiggers@xxxxxxxxxx> wrote: > Hello, > > This series makes all crypto templates initialize their spawns (i.e. > their "inner algorithms") in a consistent way, using a consistent set of > crypto_grab_*() helper functions. skcipher, aead, and akcipher spawns > already used this approach, but shash, ahash, and cipher spawns were > being initialized differently -- causing confusion and unnecessary code. > > As long as it's introducing new crypto_grab_*() functions, this series > also takes the opportunity to first improve the existing ones to take > the instance pointer as a parameter, so that all callers don't have to > store it temporarily to crypto_spawn::inst. > > Finally, this series also makes two changes that allow simplifying the > error handling in template ->create() functions: (1) crypto_drop_spawn() > is made a no-op on uninitialized instances, and (2) crypto_grab_spawn() > is made to handle an ERR_PTR() name. > > Taking advantage of these two changes, this series also simplifies the > error handling in the template ->create() functions which were being > updated anyway to use a new crypto_grab_*() function. But to keep this > series manageable, simplifying error handling in the remaining templates > is left for later. > > This series is an internal cleanup only; there are no changes for users > of the crypto API. I've tested that all the templates still get > instantiated correctly and that errors seem to be handled properly. > > Changed v1 => v2: > > - Made crypto_grab_cipher() an inline function in order to fix a > linkage error reported by the kbuild test robot. > > - Made the error paths use a style 'goto err_free_inst;' rather than > 'goto out;' in order to be more robust against bugs where an error > code accidentally isn't set (which has been a problem in the past). > > - Cleaned up a couple minor things I missed in > skcipher_alloc_instance_simple() during the conversion to > crypto_cipher_spawn. > > Eric Biggers (28): > crypto: algapi - make crypto_drop_spawn() a no-op on uninitialized > spawns > crypto: algapi - make crypto_grab_spawn() handle an ERR_PTR() name > crypto: shash - make struct shash_instance be the full size > crypto: ahash - make struct ahash_instance be the full size > crypto: skcipher - pass instance to crypto_grab_skcipher() > crypto: aead - pass instance to crypto_grab_aead() > crypto: akcipher - pass instance to crypto_grab_akcipher() > crypto: algapi - pass instance to crypto_grab_spawn() > crypto: shash - introduce crypto_grab_shash() > crypto: ahash - introduce crypto_grab_ahash() > crypto: cipher - introduce crypto_cipher_spawn and > crypto_grab_cipher() > crypto: adiantum - use crypto_grab_{cipher,shash} and simplify error > paths > crypto: cryptd - use crypto_grab_shash() and simplify error paths > crypto: hmac - use crypto_grab_shash() and simplify error paths > crypto: authenc - use crypto_grab_ahash() and simplify error paths > crypto: authencesn - use crypto_grab_ahash() and simplify error paths > crypto: gcm - use crypto_grab_ahash() and simplify error paths > crypto: ccm - use crypto_grab_ahash() and simplify error paths > crypto: chacha20poly1305 - use crypto_grab_ahash() and simplify error > paths > crypto: skcipher - use crypto_grab_cipher() and simplify error paths > crypto: cbcmac - use crypto_grab_cipher() and simplify error paths > crypto: cmac - use crypto_grab_cipher() and simplify error paths > crypto: vmac - use crypto_grab_cipher() and simplify error paths > crypto: xcbc - use crypto_grab_cipher() and simplify error paths > crypto: cipher - make crypto_spawn_cipher() take a crypto_cipher_spawn > crypto: algapi - remove obsoleted instance creation helpers > crypto: ahash - unexport crypto_ahash_type > crypto: algapi - fold crypto_init_spawn() into crypto_grab_spawn() > > crypto/adiantum.c | 90 ++++++++--------------- > crypto/aead.c | 7 +- > crypto/ahash.c | 39 ++++------ > crypto/akcipher.c | 7 +- > crypto/algapi.c | 99 +++++-------------------- > crypto/authenc.c | 58 +++++---------- > crypto/authencesn.c | 58 +++++---------- > crypto/ccm.c | 111 ++++++++++++----------------- > crypto/chacha20poly1305.c | 89 ++++++++--------------- > crypto/cmac.c | 35 +++++---- > crypto/cryptd.c | 76 ++++++-------------- > crypto/ctr.c | 4 +- > crypto/cts.c | 9 +-- > crypto/essiv.c | 16 ++--- > crypto/gcm.c | 77 ++++++++------------ > crypto/geniv.c | 4 +- > crypto/hmac.c | 33 +++++---- > crypto/lrw.c | 15 ++-- > crypto/pcrypt.c | 5 +- > crypto/rsa-pkcs1pad.c | 8 ++- > crypto/shash.c | 28 +++----- > crypto/skcipher.c | 46 +++++------- > crypto/vmac.c | 35 +++++---- > crypto/xcbc.c | 40 +++++------ > crypto/xts.c | 9 +-- > include/crypto/algapi.h | 64 ++++++++--------- > include/crypto/internal/aead.h | 11 +-- > include/crypto/internal/akcipher.h | 12 +--- > include/crypto/internal/hash.h | 70 +++++++++--------- > include/crypto/internal/skcipher.h | 15 ++-- > 30 files changed, 427 insertions(+), 743 deletions(-) All applied. Thanks. -- Email: Herbert Xu <herbert@xxxxxxxxxxxxxxxxxxx> Home Page: http://gondor.apana.org.au/~herbert/ PGP Key: http://gondor.apana.org.au/~herbert/pubkey.txt