Many users of kernel async. crypto services have a pattern of starting an async. crypto op and than using a completion to wait for it to end, resulting of the same code repeating itself in multiple places, sometime with coding errors. This patch aims to introduce a generic "wait for async. crypto op to complete" functions and move all the users I could find to use it. This gets rid of almost 300 lines of code and uncovered a few bugs in existing code (separate bug fix patch set sent previously). The patch set was boot tested on x86_64 and arm64 which at the very least tests the crypto users via testmgr but I am less confident regarding some of the other users and would love more testers. Changes from v1: - Address review comments from Eric Biggers. - Separated out bug fixes of existing code and rebase on top of that patch set. - Rename 'ecr' to 'wait' in fscrypto code. - Split patch introducing the new API from the change moving over the algif code which it originated from to the new API. - Inline crypto_wait_req(). - Some code indentation fixes. Gilad Ben-Yossef (11): crypto: introduce crypto wait for async op crypto: move algif to generic async completion crypto: move pub key to generic async completion crypto: move drbg to generic async completion crypto: move gcm to generic async completion crypto: move testmgr to generic async completion dm: move dm-verity to generic async completion fscrypt: move to generic async completion cifs: move to generic async completion ima: move to generic async completion crypto: adapt api sample to use async. op wait Documentation/crypto/api-samples.rst | 52 ++-------- crypto/af_alg.c | 27 ----- crypto/algif_aead.c | 14 +-- crypto/algif_hash.c | 29 +++--- crypto/algif_skcipher.c | 15 ++- crypto/api.c | 13 +++ crypto/asymmetric_keys/public_key.c | 28 +----- crypto/drbg.c | 34 ++----- crypto/gcm.c | 32 ++---- crypto/testmgr.c | 184 +++++++++++------------------------ drivers/md/dm-verity-target.c | 81 ++++----------- drivers/md/dm-verity.h | 5 - fs/cifs/smb2ops.c | 30 +----- fs/crypto/crypto.c | 28 +----- fs/crypto/fname.c | 36 ++----- fs/crypto/fscrypt_private.h | 10 -- fs/crypto/keyinfo.c | 21 +--- include/crypto/drbg.h | 3 +- include/crypto/if_alg.h | 14 --- include/linux/crypto.h | 41 ++++++++ security/integrity/ima/ima_crypto.c | 56 ++++------- 21 files changed, 220 insertions(+), 533 deletions(-) -- 2.1.4