From: Eric Biggers <ebiggers@kernel.org>
To: linux-crypto@vger.kernel.org
Subject: [PATCH 08/28] crypto: algapi - pass instance to crypto_grab_spawn()
Date: Sat, 28 Dec 2019 20:56:54 -0600 [thread overview]
Message-ID: <20191229025714.544159-9-ebiggers@kernel.org> (raw)
In-Reply-To: <20191229025714.544159-1-ebiggers@kernel.org>
From: Eric Biggers <ebiggers@google.com>
Currently, crypto_spawn::inst is first used temporarily to pass the
instance to crypto_grab_spawn(). Then crypto_init_spawn() overwrites it
with crypto_spawn::next, which shares the same union. Finally,
crypto_spawn::inst is set again when the instance is registered.
Make this less convoluted by just passing the instance as an argument to
crypto_grab_spawn() instead.
Signed-off-by: Eric Biggers <ebiggers@google.com>
---
crypto/adiantum.c | 6 +++---
crypto/aead.c | 3 +--
crypto/akcipher.c | 3 +--
crypto/algapi.c | 6 +++---
crypto/skcipher.c | 3 +--
include/crypto/algapi.h | 10 ++--------
6 files changed, 11 insertions(+), 20 deletions(-)
diff --git a/crypto/adiantum.c b/crypto/adiantum.c
index aaf8a66f871c..9e44180111c8 100644
--- a/crypto/adiantum.c
+++ b/crypto/adiantum.c
@@ -550,9 +550,9 @@ static int adiantum_create(struct crypto_template *tmpl, struct rtattr **tb)
streamcipher_alg = crypto_spawn_skcipher_alg(&ictx->streamcipher_spawn);
/* Block cipher, e.g. "aes" */
- crypto_set_spawn(&ictx->blockcipher_spawn,
- skcipher_crypto_instance(inst));
- err = crypto_grab_spawn(&ictx->blockcipher_spawn, blockcipher_name,
+ err = crypto_grab_spawn(&ictx->blockcipher_spawn,
+ skcipher_crypto_instance(inst),
+ blockcipher_name,
CRYPTO_ALG_TYPE_CIPHER, CRYPTO_ALG_TYPE_MASK);
if (err)
goto out_drop_streamcipher;
diff --git a/crypto/aead.c b/crypto/aead.c
index c7135e00b8ea..02a0db076d7e 100644
--- a/crypto/aead.c
+++ b/crypto/aead.c
@@ -211,9 +211,8 @@ int crypto_grab_aead(struct crypto_aead_spawn *spawn,
struct crypto_instance *inst,
const char *name, u32 type, u32 mask)
{
- spawn->base.inst = inst;
spawn->base.frontend = &crypto_aead_type;
- return crypto_grab_spawn(&spawn->base, name, type, mask);
+ return crypto_grab_spawn(&spawn->base, inst, name, type, mask);
}
EXPORT_SYMBOL_GPL(crypto_grab_aead);
diff --git a/crypto/akcipher.c b/crypto/akcipher.c
index 84ccf9b02bbe..eeed6c151d2f 100644
--- a/crypto/akcipher.c
+++ b/crypto/akcipher.c
@@ -94,9 +94,8 @@ int crypto_grab_akcipher(struct crypto_akcipher_spawn *spawn,
struct crypto_instance *inst,
const char *name, u32 type, u32 mask)
{
- spawn->base.inst = inst;
spawn->base.frontend = &crypto_akcipher_type;
- return crypto_grab_spawn(&spawn->base, name, type, mask);
+ return crypto_grab_spawn(&spawn->base, inst, name, type, mask);
}
EXPORT_SYMBOL_GPL(crypto_grab_akcipher);
diff --git a/crypto/algapi.c b/crypto/algapi.c
index a5223c5f2275..a25ce02918f8 100644
--- a/crypto/algapi.c
+++ b/crypto/algapi.c
@@ -714,8 +714,8 @@ int crypto_init_spawn2(struct crypto_spawn *spawn, struct crypto_alg *alg,
}
EXPORT_SYMBOL_GPL(crypto_init_spawn2);
-int crypto_grab_spawn(struct crypto_spawn *spawn, const char *name,
- u32 type, u32 mask)
+int crypto_grab_spawn(struct crypto_spawn *spawn, struct crypto_instance *inst,
+ const char *name, u32 type, u32 mask)
{
struct crypto_alg *alg;
int err;
@@ -729,7 +729,7 @@ int crypto_grab_spawn(struct crypto_spawn *spawn, const char *name,
return PTR_ERR(alg);
spawn->dropref = true;
- err = crypto_init_spawn(spawn, alg, spawn->inst, mask);
+ err = crypto_init_spawn(spawn, alg, inst, mask);
if (err)
crypto_mod_put(alg);
return err;
diff --git a/crypto/skcipher.c b/crypto/skcipher.c
index e5083dccccdc..a9418a7e80a9 100644
--- a/crypto/skcipher.c
+++ b/crypto/skcipher.c
@@ -761,9 +761,8 @@ int crypto_grab_skcipher(struct crypto_skcipher_spawn *spawn,
struct crypto_instance *inst,
const char *name, u32 type, u32 mask)
{
- spawn->base.inst = inst;
spawn->base.frontend = &crypto_skcipher_type;
- return crypto_grab_spawn(&spawn->base, name, type, mask);
+ return crypto_grab_spawn(&spawn->base, inst, name, type, mask);
}
EXPORT_SYMBOL_GPL(crypto_grab_skcipher);
diff --git a/include/crypto/algapi.h b/include/crypto/algapi.h
index 5022cada4fc6..2779c8d34ba9 100644
--- a/include/crypto/algapi.h
+++ b/include/crypto/algapi.h
@@ -116,20 +116,14 @@ int crypto_init_spawn(struct crypto_spawn *spawn, struct crypto_alg *alg,
int crypto_init_spawn2(struct crypto_spawn *spawn, struct crypto_alg *alg,
struct crypto_instance *inst,
const struct crypto_type *frontend);
-int crypto_grab_spawn(struct crypto_spawn *spawn, const char *name,
- u32 type, u32 mask);
+int crypto_grab_spawn(struct crypto_spawn *spawn, struct crypto_instance *inst,
+ const char *name, u32 type, u32 mask);
void crypto_drop_spawn(struct crypto_spawn *spawn);
struct crypto_tfm *crypto_spawn_tfm(struct crypto_spawn *spawn, u32 type,
u32 mask);
void *crypto_spawn_tfm2(struct crypto_spawn *spawn);
-static inline void crypto_set_spawn(struct crypto_spawn *spawn,
- struct crypto_instance *inst)
-{
- spawn->inst = inst;
-}
-
struct crypto_attr_type *crypto_get_attr_type(struct rtattr **tb);
int crypto_check_attr_type(struct rtattr **tb, u32 type);
const char *crypto_attr_alg_name(struct rtattr *rta);
--
2.24.1
next prev parent reply other threads:[~2019-12-29 2:58 UTC|newest]
Thread overview: 30+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-12-29 2:56 [PATCH 00/28] crypto: template instantiation cleanup Eric Biggers
2019-12-29 2:56 ` [PATCH 01/28] crypto: algapi - make crypto_drop_spawn() a no-op on uninitialized spawns Eric Biggers
2019-12-29 2:56 ` [PATCH 02/28] crypto: algapi - make crypto_grab_spawn() handle an ERR_PTR() name Eric Biggers
2019-12-29 2:56 ` [PATCH 03/28] crypto: shash - make struct shash_instance be the full size Eric Biggers
2019-12-29 2:56 ` [PATCH 04/28] crypto: ahash - make struct ahash_instance " Eric Biggers
2019-12-29 2:56 ` [PATCH 05/28] crypto: skcipher - pass instance to crypto_grab_skcipher() Eric Biggers
2019-12-29 2:56 ` [PATCH 06/28] crypto: aead - pass instance to crypto_grab_aead() Eric Biggers
2019-12-29 2:56 ` [PATCH 07/28] crypto: akcipher - pass instance to crypto_grab_akcipher() Eric Biggers
2019-12-29 2:56 ` Eric Biggers [this message]
2019-12-29 2:56 ` [PATCH 09/28] crypto: shash - introduce crypto_grab_shash() Eric Biggers
2019-12-29 2:56 ` [PATCH 10/28] crypto: ahash - introduce crypto_grab_ahash() Eric Biggers
2019-12-29 2:56 ` [PATCH 11/28] crypto: cipher - introduce crypto_cipher_spawn and crypto_grab_cipher() Eric Biggers
2020-01-01 14:50 ` Eric Biggers
2019-12-29 2:56 ` [PATCH 12/28] crypto: adiantum - use crypto_grab_{cipher,shash} and simplify error paths Eric Biggers
2019-12-29 2:56 ` [PATCH 13/28] crypto: cryptd - use crypto_grab_shash() " Eric Biggers
2019-12-29 2:57 ` [PATCH 14/28] crypto: hmac " Eric Biggers
2019-12-29 2:57 ` [PATCH 15/28] crypto: authenc - use crypto_grab_ahash() " Eric Biggers
2019-12-29 2:57 ` [PATCH 16/28] crypto: authencesn " Eric Biggers
2019-12-29 2:57 ` [PATCH 17/28] crypto: gcm " Eric Biggers
2019-12-29 2:57 ` [PATCH 18/28] crypto: ccm " Eric Biggers
2019-12-29 2:57 ` [PATCH 19/28] crypto: chacha20poly1305 " Eric Biggers
2019-12-29 2:57 ` [PATCH 20/28] crypto: skcipher - use crypto_grab_cipher() " Eric Biggers
2019-12-29 2:57 ` [PATCH 21/28] crypto: cbcmac " Eric Biggers
2019-12-29 2:57 ` [PATCH 22/28] crypto: cmac " Eric Biggers
2019-12-29 2:57 ` [PATCH 23/28] crypto: vmac " Eric Biggers
2019-12-29 2:57 ` [PATCH 24/28] crypto: xcbc " Eric Biggers
2019-12-29 2:57 ` [PATCH 25/28] crypto: cipher - make crypto_spawn_cipher() take a crypto_cipher_spawn Eric Biggers
2019-12-29 2:57 ` [PATCH 26/28] crypto: algapi - remove obsoleted instance creation helpers Eric Biggers
2019-12-29 2:57 ` [PATCH 27/28] crypto: ahash - unexport crypto_ahash_type Eric Biggers
2019-12-29 2:57 ` [PATCH 28/28] crypto: algapi - fold crypto_init_spawn() into crypto_grab_spawn() Eric Biggers
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20191229025714.544159-9-ebiggers@kernel.org \
--to=ebiggers@kernel.org \
--cc=linux-crypto@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.