crypto: algapi - make crypto_grab_spawn() handle an ERR_PTR() name
authorEric Biggers <ebiggers@google.com>
Fri, 3 Jan 2020 03:58:42 +0000 (19:58 -0800)
committerHerbert Xu <herbert@gondor.apana.org.au>
Thu, 9 Jan 2020 03:30:53 +0000 (11:30 +0800)
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>
crypto/algapi.c

index 4c761f4..a5223c5 100644 (file)
@@ -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);