From: Andrey Smirnov <andrew.smirnov@gmail.com>
To: linux-crypto@vger.kernel.org
Cc: "Andrey Smirnov" <andrew.smirnov@gmail.com>,
"Horia Geantă" <horia.geanta@nxp.com>,
"Chris Healy" <cphealy@gmail.com>,
"Lucas Stach" <l.stach@pengutronix.de>,
"Herbert Xu" <herbert@gondor.apana.org.au>,
"Iuliana Prodan" <iuliana.prodan@nxp.com>,
linux-kernel@vger.kernel.org, linux-imx@nxp.com
Subject: [PATCH v9 2/9] crypto: caam - use struct hwrng's .init for initialization
Date: Thu, 19 Mar 2020 09:12:26 -0700 [thread overview]
Message-ID: <20200319161233.8134-3-andrew.smirnov@gmail.com> (raw)
In-Reply-To: <20200319161233.8134-1-andrew.smirnov@gmail.com>
Make caamrng code a bit more symmetric by moving initialization code
to .init hook of struct hwrng.
Signed-off-by: Andrey Smirnov <andrew.smirnov@gmail.com>
Reviewed-by: Horia Geantă <horia.geanta@nxp.com>
Cc: Chris Healy <cphealy@gmail.com>
Cc: Lucas Stach <l.stach@pengutronix.de>
Cc: Horia Geantă <horia.geanta@nxp.com>
Cc: Herbert Xu <herbert@gondor.apana.org.au>
Cc: Iuliana Prodan <iuliana.prodan@nxp.com>
Cc: linux-crypto@vger.kernel.org
Cc: linux-kernel@vger.kernel.org
Cc: linux-imx@nxp.com
---
drivers/crypto/caam/caamrng.c | 47 ++++++++++++++++++-----------------
1 file changed, 24 insertions(+), 23 deletions(-)
diff --git a/drivers/crypto/caam/caamrng.c b/drivers/crypto/caam/caamrng.c
index 34cbb4a56f05..69a02ac5de54 100644
--- a/drivers/crypto/caam/caamrng.c
+++ b/drivers/crypto/caam/caamrng.c
@@ -256,6 +256,7 @@ static void caam_cleanup(struct hwrng *rng)
}
rng_unmap_ctx(rng_ctx);
+ caam_jr_free(rng_ctx->jrdev);
}
static int caam_init_buf(struct caam_rng_ctx *ctx, int buf_id)
@@ -274,28 +275,43 @@ static int caam_init_buf(struct caam_rng_ctx *ctx, int buf_id)
return 0;
}
-static int caam_init_rng(struct caam_rng_ctx *ctx, struct device *jrdev)
+static int caam_init(struct hwrng *rng)
{
+ struct caam_rng_ctx *ctx = rng_ctx;
int err;
- ctx->jrdev = jrdev;
+ ctx->jrdev = caam_jr_alloc();
+ err = PTR_ERR_OR_ZERO(ctx->jrdev);
+ if (err) {
+ pr_err("Job Ring Device allocation for transform failed\n");
+ return err;
+ }
err = rng_create_sh_desc(ctx);
if (err)
- return err;
+ goto free_jrdev;
ctx->current_buf = 0;
ctx->cur_buf_idx = 0;
err = caam_init_buf(ctx, 0);
if (err)
- return err;
+ goto free_jrdev;
+
+ err = caam_init_buf(ctx, 1);
+ if (err)
+ goto free_jrdev;
- return caam_init_buf(ctx, 1);
+ return 0;
+
+free_jrdev:
+ caam_jr_free(ctx->jrdev);
+ return err;
}
static struct hwrng caam_rng = {
.name = "rng-caam",
+ .init = caam_init,
.cleanup = caam_cleanup,
.read = caam_read,
};
@@ -305,14 +321,12 @@ void caam_rng_exit(void)
if (!init_done)
return;
- caam_jr_free(rng_ctx->jrdev);
hwrng_unregister(&caam_rng);
kfree(rng_ctx);
}
int caam_rng_init(struct device *ctrldev)
{
- struct device *dev;
u32 rng_inst;
struct caam_drv_private *priv = dev_get_drvdata(ctrldev);
int err;
@@ -328,21 +342,11 @@ int caam_rng_init(struct device *ctrldev)
if (!rng_inst)
return 0;
- dev = caam_jr_alloc();
- if (IS_ERR(dev)) {
- pr_err("Job Ring Device allocation for transform failed\n");
- return PTR_ERR(dev);
- }
rng_ctx = kmalloc(sizeof(*rng_ctx), GFP_DMA | GFP_KERNEL);
- if (!rng_ctx) {
- err = -ENOMEM;
- goto free_caam_alloc;
- }
- err = caam_init_rng(rng_ctx, dev);
- if (err)
- goto free_rng_ctx;
+ if (!rng_ctx)
+ return -ENOMEM;
- dev_info(dev, "registering rng-caam\n");
+ dev_info(ctrldev, "registering rng-caam\n");
err = hwrng_register(&caam_rng);
if (!err) {
@@ -350,9 +354,6 @@ int caam_rng_init(struct device *ctrldev)
return err;
}
-free_rng_ctx:
kfree(rng_ctx);
-free_caam_alloc:
- caam_jr_free(dev);
return err;
}
--
2.21.0
next prev parent reply other threads:[~2020-03-19 16:13 UTC|newest]
Thread overview: 15+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-03-19 16:12 [PATCH v9 0/9] enable CAAM's HWRNG as default Andrey Smirnov
2020-03-19 16:12 ` [PATCH v9 1/9] crypto: caam - allocate RNG instantiation descriptor with GFP_DMA Andrey Smirnov
2020-03-19 16:12 ` Andrey Smirnov [this message]
2020-03-19 16:12 ` [PATCH v9 3/9] crypto: caam - drop global context pointer and init_done Andrey Smirnov
2020-03-20 15:47 ` Horia Geantă
2020-03-19 16:12 ` [PATCH v9 4/9] crypto: caam - simplify RNG implementation Andrey Smirnov
2020-03-19 16:12 ` [PATCH v9 5/9] crypto: caam - check if RNG job failed Andrey Smirnov
2020-03-19 16:12 ` [PATCH v9 6/9] crypto: caam - invalidate entropy register during RNG initialization Andrey Smirnov
2020-03-19 16:12 ` [PATCH v9 7/9] bus: fsl-mc: add api to retrieve mc version Andrey Smirnov
2020-03-19 16:12 ` [PATCH v9 8/9] crypto: caam - enable prediction resistance in HRWNG Andrey Smirnov
2020-03-20 15:49 ` Horia Geantă
2020-03-19 16:12 ` [PATCH v9 9/9] crypto: caam - limit single JD RNG output to maximum of 16 bytes Andrey Smirnov
2020-03-20 16:13 ` [PATCH v9 0/9] enable CAAM's HWRNG as default Horia Geantă
2020-03-20 16:18 ` Greg Kroah-Hartman
2020-03-27 4:54 ` 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=20200319161233.8134-3-andrew.smirnov@gmail.com \
--to=andrew.smirnov@gmail.com \
--cc=cphealy@gmail.com \
--cc=herbert@gondor.apana.org.au \
--cc=horia.geanta@nxp.com \
--cc=iuliana.prodan@nxp.com \
--cc=l.stach@pengutronix.de \
--cc=linux-crypto@vger.kernel.org \
--cc=linux-imx@nxp.com \
--cc=linux-kernel@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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).