This series makes all crypto templates use the new way of freeing instances where a ->free() method is installed to the instance struct itself. This replaces the weakly-typed method crypto_template::free(). skcipher and akcipher were already using the new way, while aead was mostly but not always using the new way. shash and ahash were using the old way. This series eliminates this inconsistency (and the redundant code associated with it) by making everyone use the new way. The last patch adds registration-time checks which verify that all instances really have a ->free() method. This series is an internal cleanup only; there are no changes for users of the crypto API. This series is based on top of my other series "[PATCH v2 00/28] crypto: template instantiation cleanup". Changed v1 => v2: - Rebased onto v2 of the other series. Eric Biggers (6): crypto: hash - add support for new way of freeing instances crypto: geniv - convert to new way of freeing instances crypto: cryptd - convert to new way of freeing instances crypto: shash - convert shash_free_instance() to new style crypto: algapi - remove crypto_template::{alloc,free}() crypto: algapi - enforce that all instances have a ->free() method crypto/aead.c | 8 +++---- crypto/ahash.c | 11 +++++++++ crypto/akcipher.c | 2 ++ crypto/algapi.c | 5 ---- crypto/algboss.c | 12 +--------- crypto/ccm.c | 5 ++-- crypto/cmac.c | 5 ++-- crypto/cryptd.c | 42 ++++++++++++++++----------------- crypto/echainiv.c | 20 ++++------------ crypto/geniv.c | 15 ++++++------ crypto/hmac.c | 5 ++-- crypto/seqiv.c | 20 ++++------------ crypto/shash.c | 19 +++++++++++---- crypto/skcipher.c | 3 +++ crypto/vmac.c | 5 ++-- crypto/xcbc.c | 5 ++-- include/crypto/algapi.h | 2 -- include/crypto/internal/geniv.h | 1 - include/crypto/internal/hash.h | 4 +++- 19 files changed, 89 insertions(+), 100 deletions(-) -- 2.24.1