linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH v9 00/20] simplify crypto wait for async op
@ 2017-10-15  9:19 Gilad Ben-Yossef
  2017-10-15  9:19 ` [PATCH v9 01/20] crypto: change transient busy return code to -EAGAIN Gilad Ben-Yossef
                   ` (21 more replies)
  0 siblings, 22 replies; 27+ messages in thread
From: Gilad Ben-Yossef @ 2017-10-15  9:19 UTC (permalink / raw)
  To: Herbert Xu, David S. Miller, Jonathan Corbet, David Howells,
	Tom Lendacky, Gary Hook, Boris Brezillon, Arnaud Ebalard,
	Matthias Brugger, Alasdair Kergon, Mike Snitzer, dm-devel,
	Steve French, Theodore Y. Ts'o, Jaegeuk Kim,
	Steffen Klassert, Alexey Kuznetsov, Hideaki YOSHIFUJI,
	Mimi Zohar, Dmitry Kasatkin, James Morris, Serge E. Hallyn
  Cc: Ofir Drang, linux-crypto, linux-doc, linux-kernel, keyrings,
	linux-arm-kernel, linux-mediatek, linux-cifs, samba-technical,
	linux-fscrypt, netdev, linux-ima-devel, linux-ima-user,
	linux-security-module

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.

This patch set simplifies this common use case in two ways:

First, by separating the return codes of the case where a
request is queued to a backlog due to the provider being
busy (-EBUSY) from the case the request has failed due
to the provider being busy and backlogging is not enabled
(-EAGAIN).

Next, this change is than built on to create a generic API
to wait for a async. crypto operation to complete.

The end result is a smaller code base and an API that is
easier to use and more difficult to get wrong.

The patch set was boot tested on x86_64 and arm64 which
at the very least tests the crypto users via testmgr and
tcrypt but I do note that I do not have access to some
of the HW whose drivers are modified nor do I claim I was
able to test all of the corner cases.

The patch set is based upon linux-next release tagged
next-20171013.

Changes from v8:
- Remove the translation of EAGAIN return code to the
  previous return code of EBUSY for the user space
  interface of algif as no one seems to rely on it as
  requested by Herbert Xu.

Changes from v7:
- Turn -EBUSY to -EAGAIN also in crypto using net
  code which I missed before, as has been pointed
  out by Harsh Jain.

Changes from v6:
- Fix brown paper bag compile error on marvell/cesa
  code.

Changes from v5:
- Remove redundant new line as spotted by Jonathan
  Cameron.
- Reworded dm-verity change commit message to better
  clarify potential issue averted by change as
  pointed out by Mikulas Patocka.

Changes from v4:
- Rebase on top of latest algif changes from Stephan
  Mueller.
- Fix typo in ccp patch title.

Changes from v3:
- Instead of changing the return code to indicate
  backlog queueing, change the return code to indicate
  transient busy state, as suggested by Herbert Xu.

Changes from v2:
- Patch title changed from "introduce crypto wait for
  async op" to better reflect the current state.
- Rebase on top of latest linux-next.
- Add a new return code of -EIOCBQUEUED for backlog
  queueing, as suggested by Herbert Xu.
- Transform more users to the new API.
- Update the drbg change to account for new init as
  indicated by Stephan Muller.

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 (20):
  crypto: change transient busy return code to -EAGAIN
  crypto: ccp: use -EAGAIN for transient busy indication
  net: use -EAGAIN for transient busy indication
  crypto: remove redundant backlog checks on EBUSY
  crypto: marvell/cesa: remove redundant backlog checks on EBUSY
  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
  fscrypt: move to generic async completion
  dm: move dm-verity to generic async completion
  cifs: move to generic async completion
  ima: move to generic async completion
  crypto: tcrypt: move to generic async completion
  crypto: talitos: move to generic async completion
  crypto: qce: move to generic async completion
  crypto: mediatek: 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/ahash.c                       |  12 +--
 crypto/algapi.c                      |   6 +-
 crypto/algif_aead.c                  |   8 +-
 crypto/algif_hash.c                  |  30 +++---
 crypto/algif_skcipher.c              |   9 +-
 crypto/api.c                         |  13 +++
 crypto/asymmetric_keys/public_key.c  |  28 +----
 crypto/cryptd.c                      |   4 +-
 crypto/cts.c                         |   6 +-
 crypto/drbg.c                        |  36 ++-----
 crypto/gcm.c                         |  32 ++----
 crypto/lrw.c                         |   8 +-
 crypto/rsa-pkcs1pad.c                |  16 +--
 crypto/tcrypt.c                      |  84 +++++----------
 crypto/testmgr.c                     | 204 ++++++++++++-----------------------
 crypto/xts.c                         |   8 +-
 drivers/crypto/ccp/ccp-crypto-main.c |   8 +-
 drivers/crypto/ccp/ccp-dev.c         |   7 +-
 drivers/crypto/marvell/cesa.c        |   3 +-
 drivers/crypto/marvell/cesa.h        |   2 +-
 drivers/crypto/mediatek/mtk-aes.c    |  31 +-----
 drivers/crypto/qce/sha.c             |  30 +-----
 drivers/crypto/talitos.c             |  38 +------
 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              |  15 +--
 include/linux/crypto.h               |  40 +++++++
 net/ipv4/ah4.c                       |   2 +-
 net/ipv4/esp4.c                      |   2 +-
 net/ipv6/ah6.c                       |   2 +-
 net/ipv6/esp6.c                      |   2 +-
 security/integrity/ima/ima_crypto.c  |  56 +++-------
 40 files changed, 297 insertions(+), 738 deletions(-)

-- 
2.7.4

^ permalink raw reply	[flat|nested] 27+ messages in thread

end of thread, other threads:[~2017-10-18  5:44 UTC | newest]

Thread overview: 27+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2017-10-15  9:19 [PATCH v9 00/20] simplify crypto wait for async op Gilad Ben-Yossef
2017-10-15  9:19 ` [PATCH v9 01/20] crypto: change transient busy return code to -EAGAIN Gilad Ben-Yossef
2017-10-15  9:19 ` [PATCH v9 02/20] crypto: ccp: use -EAGAIN for transient busy indication Gilad Ben-Yossef
2017-10-15  9:19 ` [PATCH v9 03/20] net: " Gilad Ben-Yossef
2017-10-15  9:19 ` [PATCH v9 04/20] crypto: remove redundant backlog checks on EBUSY Gilad Ben-Yossef
2017-10-15  9:19 ` [PATCH v9 05/20] crypto: marvell/cesa: " Gilad Ben-Yossef
2017-10-15  9:19 ` [PATCH v9 06/20] crypto: introduce crypto wait for async op Gilad Ben-Yossef
2017-10-15  9:19 ` [PATCH v9 07/20] crypto: move algif to generic async completion Gilad Ben-Yossef
2017-10-15  9:19 ` [PATCH v9 08/20] crypto: move pub key " Gilad Ben-Yossef
2017-10-15  9:19 ` [PATCH v9 09/20] crypto: move drbg " Gilad Ben-Yossef
2017-10-15  9:19 ` [PATCH v9 10/20] crypto: move gcm " Gilad Ben-Yossef
2017-10-15  9:19 ` [PATCH v9 11/20] crypto: move testmgr " Gilad Ben-Yossef
2017-10-15  9:19 ` [PATCH v9 12/20] fscrypt: move " Gilad Ben-Yossef
2017-10-15  9:19 ` [PATCH v9 13/20] dm: move dm-verity " Gilad Ben-Yossef
2017-10-15  9:19 ` [PATCH v9 14/20] cifs: move " Gilad Ben-Yossef
2017-10-15  9:20 ` [PATCH v9 15/20] ima: " Gilad Ben-Yossef
2017-10-15  9:20 ` [PATCH v9 16/20] crypto: tcrypt: " Gilad Ben-Yossef
2017-10-15  9:20 ` [PATCH v9 17/20] crypto: talitos: " Gilad Ben-Yossef
2017-10-17 10:50   ` Christophe LEROY
2017-10-15  9:20 ` [PATCH v9 18/20] crypto: qce: " Gilad Ben-Yossef
2017-10-15  9:20 ` [PATCH v9 19/20] crypto: mediatek: " Gilad Ben-Yossef
2017-10-15  9:20 ` [PATCH v9 20/20] crypto: adapt api sample to use async. op wait Gilad Ben-Yossef
2017-10-15 15:38 ` [PATCH v9 00/20] simplify crypto wait for async op Herbert Xu
2017-10-17 11:55   ` Gilad Ben-Yossef
2017-10-17 13:09     ` Herbert Xu
2017-10-17 14:06 ` Russell King - ARM Linux
2017-10-18  5:44   ` Gilad Ben-Yossef

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).