forked from Minki/linux
crypto: algapi - pass instance to crypto_grab_spawn()
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> Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
This commit is contained in:
parent
73bed26f73
commit
de95c95741
@ -542,9 +542,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;
|
||||
|
@ -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);
|
||||
|
||||
|
@ -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);
|
||||
|
||||
|
@ -714,8 +714,8 @@ out:
|
||||
}
|
||||
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;
|
||||
|
@ -750,9 +750,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);
|
||||
|
||||
|
@ -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);
|
||||
|
Loading…
Reference in New Issue
Block a user