[PATCH v2 00/11] introduce crypto wait for async op

From: Gilad Ben-Yossef
Date: Mon May 29 2017 - 04:23:21 EST


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