All of lore.kernel.org
 help / color / mirror / Atom feed
From: Eric Biggers <ebiggers@kernel.org>
To: linux-crypto@vger.kernel.org
Subject: [PATCH 04/12] crypto: ctr - simplify error handling in crypto_rfc3686_create()
Date: Tue, 25 Feb 2020 20:59:16 -0800	[thread overview]
Message-ID: <20200226045924.97053-5-ebiggers@kernel.org> (raw)
In-Reply-To: <20200226045924.97053-1-ebiggers@kernel.org>

From: Eric Biggers <ebiggers@google.com>

Simplify the error handling in crypto_rfc3686_create() by taking
advantage of crypto_grab_skcipher() now handling an ERR_PTR() name and
by taking advantage of crypto_drop_skcipher() now accepting (as a no-op)
a spawn that hasn't been grabbed yet.

Signed-off-by: Eric Biggers <ebiggers@google.com>
---
 crypto/ctr.c | 29 +++++++++--------------------
 1 file changed, 9 insertions(+), 20 deletions(-)

diff --git a/crypto/ctr.c b/crypto/ctr.c
index a8feab621c6c1..31ac4ae598e17 100644
--- a/crypto/ctr.c
+++ b/crypto/ctr.c
@@ -260,7 +260,6 @@ static int crypto_rfc3686_create(struct crypto_template *tmpl,
 	struct skcipher_instance *inst;
 	struct skcipher_alg *alg;
 	struct crypto_skcipher_spawn *spawn;
-	const char *cipher_name;
 	u32 mask;
 
 	int err;
@@ -272,10 +271,6 @@ static int crypto_rfc3686_create(struct crypto_template *tmpl,
 	if ((algt->type ^ CRYPTO_ALG_TYPE_SKCIPHER) & algt->mask)
 		return -EINVAL;
 
-	cipher_name = crypto_attr_alg_name(tb[1]);
-	if (IS_ERR(cipher_name))
-		return PTR_ERR(cipher_name);
-
 	inst = kzalloc(sizeof(*inst) + sizeof(*spawn), GFP_KERNEL);
 	if (!inst)
 		return -ENOMEM;
@@ -287,7 +282,7 @@ static int crypto_rfc3686_create(struct crypto_template *tmpl,
 	spawn = skcipher_instance_ctx(inst);
 
 	err = crypto_grab_skcipher(spawn, skcipher_crypto_instance(inst),
-				   cipher_name, 0, mask);
+				   crypto_attr_alg_name(tb[1]), 0, mask);
 	if (err)
 		goto err_free_inst;
 
@@ -296,20 +291,20 @@ static int crypto_rfc3686_create(struct crypto_template *tmpl,
 	/* We only support 16-byte blocks. */
 	err = -EINVAL;
 	if (crypto_skcipher_alg_ivsize(alg) != CTR_RFC3686_BLOCK_SIZE)
-		goto err_drop_spawn;
+		goto err_free_inst;
 
 	/* Not a stream cipher? */
 	if (alg->base.cra_blocksize != 1)
-		goto err_drop_spawn;
+		goto err_free_inst;
 
 	err = -ENAMETOOLONG;
 	if (snprintf(inst->alg.base.cra_name, CRYPTO_MAX_ALG_NAME,
 		     "rfc3686(%s)", alg->base.cra_name) >= CRYPTO_MAX_ALG_NAME)
-		goto err_drop_spawn;
+		goto err_free_inst;
 	if (snprintf(inst->alg.base.cra_driver_name, CRYPTO_MAX_ALG_NAME,
 		     "rfc3686(%s)", alg->base.cra_driver_name) >=
 	    CRYPTO_MAX_ALG_NAME)
-		goto err_drop_spawn;
+		goto err_free_inst;
 
 	inst->alg.base.cra_priority = alg->base.cra_priority;
 	inst->alg.base.cra_blocksize = 1;
@@ -336,17 +331,11 @@ static int crypto_rfc3686_create(struct crypto_template *tmpl,
 	inst->free = crypto_rfc3686_free;
 
 	err = skcipher_register_instance(tmpl, inst);
-	if (err)
-		goto err_drop_spawn;
-
-out:
-	return err;
-
-err_drop_spawn:
-	crypto_drop_skcipher(spawn);
+	if (err) {
 err_free_inst:
-	kfree(inst);
-	goto out;
+		crypto_rfc3686_free(inst);
+	}
+	return err;
 }
 
 static struct crypto_template crypto_ctr_tmpls[] = {
-- 
2.25.1


  parent reply	other threads:[~2020-02-26  5:01 UTC|newest]

Thread overview: 14+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-02-26  4:59 [PATCH 00/12] crypto: more template instantiation cleanups Eric Biggers
2020-02-26  4:59 ` [PATCH 01/12] crypto: authencesn - fix weird comma-terminated line Eric Biggers
2020-02-26  4:59 ` [PATCH 02/12] crypto: ccm - simplify error handling in crypto_rfc4309_create() Eric Biggers
2020-02-26  4:59 ` [PATCH 03/12] crypto: cryptd - simplify error handling in cryptd_create_*() Eric Biggers
2020-02-26  4:59 ` Eric Biggers [this message]
2020-02-26  4:59 ` [PATCH 05/12] crypto: cts - simplify error handling in crypto_cts_create() Eric Biggers
2020-02-26  4:59 ` [PATCH 06/12] crypto: gcm - simplify error handling in crypto_rfc4106_create() Eric Biggers
2020-02-26  4:59 ` [PATCH 07/12] crypto: gcm - simplify error handling in crypto_rfc4543_create() Eric Biggers
2020-02-26  4:59 ` [PATCH 08/12] crypto: geniv - simply error handling in aead_geniv_alloc() Eric Biggers
2020-02-26  4:59 ` [PATCH 09/12] crypto: lrw - simplify error handling in create() Eric Biggers
2020-02-26  4:59 ` [PATCH 10/12] crypto: pcrypt - simplify error handling in pcrypt_create_aead() Eric Biggers
2020-02-26  4:59 ` [PATCH 11/12] crypto: rsa-pkcs1pad - simplify error handling in pkcs1pad_create() Eric Biggers
2020-02-26  4:59 ` [PATCH 12/12] crypto: xts - simplify error handling in ->create() Eric Biggers
2020-03-06  1:51 ` [PATCH 00/12] crypto: more template instantiation cleanups Herbert Xu

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=20200226045924.97053-5-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.