Commit 6e4e603a authored by Nitesh Lal's avatar Nitesh Lal Committed by Herbert Xu

crypto: caam - Dynamic memory allocation for caam_rng_ctx object

This patch allocates memory from DMAable region to the caam_rng_ctx object,
earlier it had been statically allocated which resulted in errorneous
behaviour on inserting the caamrng module at the runtime.
Signed-off-by: default avatarNitesh Lal <NiteshNarayanLal@freescale.com>
Acked-by: default avatarRuchika Gupta <ruchika.gupta@freescale.com>
Signed-off-by: default avatarHerbert Xu <herbert@gondor.apana.org.au>
parent 4f7f1d7c
...@@ -76,7 +76,7 @@ struct caam_rng_ctx { ...@@ -76,7 +76,7 @@ struct caam_rng_ctx {
struct buf_data bufs[2]; struct buf_data bufs[2];
}; };
static struct caam_rng_ctx rng_ctx; static struct caam_rng_ctx *rng_ctx;
static inline void rng_unmap_buf(struct device *jrdev, struct buf_data *bd) static inline void rng_unmap_buf(struct device *jrdev, struct buf_data *bd)
{ {
...@@ -137,7 +137,7 @@ static inline int submit_job(struct caam_rng_ctx *ctx, int to_current) ...@@ -137,7 +137,7 @@ static inline int submit_job(struct caam_rng_ctx *ctx, int to_current)
static int caam_read(struct hwrng *rng, void *data, size_t max, bool wait) static int caam_read(struct hwrng *rng, void *data, size_t max, bool wait)
{ {
struct caam_rng_ctx *ctx = &rng_ctx; struct caam_rng_ctx *ctx = rng_ctx;
struct buf_data *bd = &ctx->bufs[ctx->current_buf]; struct buf_data *bd = &ctx->bufs[ctx->current_buf];
int next_buf_idx, copied_idx; int next_buf_idx, copied_idx;
int err; int err;
...@@ -237,12 +237,12 @@ static void caam_cleanup(struct hwrng *rng) ...@@ -237,12 +237,12 @@ static void caam_cleanup(struct hwrng *rng)
struct buf_data *bd; struct buf_data *bd;
for (i = 0; i < 2; i++) { for (i = 0; i < 2; i++) {
bd = &rng_ctx.bufs[i]; bd = &rng_ctx->bufs[i];
if (atomic_read(&bd->empty) == BUF_PENDING) if (atomic_read(&bd->empty) == BUF_PENDING)
wait_for_completion(&bd->filled); wait_for_completion(&bd->filled);
} }
rng_unmap_ctx(&rng_ctx); rng_unmap_ctx(rng_ctx);
} }
static void caam_init_buf(struct caam_rng_ctx *ctx, int buf_id) static void caam_init_buf(struct caam_rng_ctx *ctx, int buf_id)
...@@ -273,8 +273,9 @@ static struct hwrng caam_rng = { ...@@ -273,8 +273,9 @@ static struct hwrng caam_rng = {
static void __exit caam_rng_exit(void) static void __exit caam_rng_exit(void)
{ {
caam_jr_free(rng_ctx.jrdev); caam_jr_free(rng_ctx->jrdev);
hwrng_unregister(&caam_rng); hwrng_unregister(&caam_rng);
kfree(rng_ctx);
} }
static int __init caam_rng_init(void) static int __init caam_rng_init(void)
...@@ -286,7 +287,9 @@ static int __init caam_rng_init(void) ...@@ -286,7 +287,9 @@ static int __init caam_rng_init(void)
pr_err("Job Ring Device allocation for transform failed\n"); pr_err("Job Ring Device allocation for transform failed\n");
return PTR_ERR(dev); return PTR_ERR(dev);
} }
rng_ctx = kmalloc(sizeof(struct caam_rng_ctx), GFP_DMA);
if (!rng_ctx)
return -ENOMEM;
caam_init_rng(&rng_ctx, dev); caam_init_rng(&rng_ctx, dev);
dev_info(dev, "registering rng-caam\n"); dev_info(dev, "registering rng-caam\n");
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment