[PATCH v4 5/7] crypto: caam - fix RNG buffer cache alignment

Oleksij Rempel o.rempel at pengutronix.de
Tue Mar 21 02:24:09 PDT 2017


this is alternate version of linux fix:
---------------------------------------------------------------------
The hwrng output buffers (2) are cast inside of a a struct
(caam_rng_ctx)
allocated in one DMA-tagged region. While the kernel's heap allocator
should place the overall struct on a cacheline aligned boundary, the 2
buffers contained within may not necessarily align. Consenquently, the
ends
of unaligned buffers may not fully flush, and if so, stale data will be
left
behind, resulting in small repeating patterns.

This fix aligns the buffers inside the struct.

Note that not all of the data inside caam_rng_ctx necessarily needs to
be
DMA-tagged, only the buffers themselves require this. However, a fix
would
incur the expense of error-handling bloat in the case of allocation
failure.

Cc: stable at vger.kernel.org
Signed-off-by: Steve Cornelius <steve.cornelius at freescale.com>
Signed-off-by: Victoria Milhoan <vicki.milhoan at freescale.com>
Signed-off-by: Herbert Xu <herbert at gondor.apana.org.au>
---------------------------------------------------------------------

instead we will use just dma_alloc()

Signed-off-by: Oleksij Rempel <o.rempel at pengutronix.de>
---
 drivers/crypto/caam/caamrng.c | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/drivers/crypto/caam/caamrng.c b/drivers/crypto/caam/caamrng.c
index aabad0416..31a92731d 100644
--- a/drivers/crypto/caam/caamrng.c
+++ b/drivers/crypto/caam/caamrng.c
@@ -55,7 +55,7 @@
 
 /* Buffer, its dma address and lock */
 struct buf_data {
-	u8 buf[RN_BUF_SIZE];
+	u8 *buf;
 	dma_addr_t addr;
 	u32 hw_desc[DESC_JOB_O_LEN];
 #define BUF_NOT_EMPTY 0
@@ -218,6 +218,8 @@ static int caam_init_buf(struct caam_rng_ctx *ctx, int buf_id)
 	struct buf_data *bd = &ctx->bufs[buf_id];
 	int err;
 
+	bd->buf = dma_alloc(RN_BUF_SIZE);
+
 	err = rng_create_job_desc(ctx, buf_id);
 	if (err)
 		return err;
-- 
2.11.0




More information about the barebox mailing list