summaryrefslogtreecommitdiffstats
path: root/crypto
diff options
context:
space:
mode:
authorEric Biggers <ebiggers@google.com>2020-01-03 04:58:42 +0100
committerHerbert Xu <herbert@gondor.apana.org.au>2020-01-09 04:30:53 +0100
commitca94e9374a7d86e0594ed824b437656ca83d47b4 (patch)
tree11905f8a231550caf192036f02c5b565a051ef89 /crypto
parentcrypto: algapi - make crypto_drop_spawn() a no-op on uninitialized spawns (diff)
downloadlinux-ca94e9374a7d86e0594ed824b437656ca83d47b4.tar.xz
linux-ca94e9374a7d86e0594ed824b437656ca83d47b4.zip
crypto: algapi - make crypto_grab_spawn() handle an ERR_PTR() name
To allow further simplifying template ->create() functions, make crypto_grab_spawn() handle an ERR_PTR() name by passing back the error. For most templates, this will allow the result of crypto_attr_alg_name() to be passed directly to crypto_grab_*(), rather than first having to assign it to a variable [where it can then potentially be misused, as it was in the rfc7539 template prior to commit 5e27f38f1f3f ("crypto: chacha20poly1305 - set cra_name correctly")] and check it for error. Signed-off-by: Eric Biggers <ebiggers@google.com> Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
Diffstat (limited to 'crypto')
-rw-r--r--crypto/algapi.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/crypto/algapi.c b/crypto/algapi.c
index 4c761f48110d..a5223c5f2275 100644
--- a/crypto/algapi.c
+++ b/crypto/algapi.c
@@ -720,6 +720,10 @@ int crypto_grab_spawn(struct crypto_spawn *spawn, const char *name,
struct crypto_alg *alg;
int err;
+ /* Allow the result of crypto_attr_alg_name() to be passed directly */
+ if (IS_ERR(name))
+ return PTR_ERR(name);
+
alg = crypto_find_alg(name, spawn->frontend, type, mask);
if (IS_ERR(alg))
return PTR_ERR(alg);