]> git.karo-electronics.de Git - karo-tx-linux.git/commitdiff
MLK-9769-26 caam: fix RNG buffer cache alignment
authorSteve Cornelius <steve.cornelius@freescale.com>
Tue, 6 Jan 2015 23:20:15 +0000 (16:20 -0700)
committerVictoria Milhoan <vicki.milhoan@freescale.com>
Fri, 16 Jan 2015 03:55:46 +0000 (20:55 -0700)
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.

Signed-off-by: Steve Cornelius <steve.cornelius@freescale.com>
drivers/crypto/caam/caamrng.c

index e8d78398ed1a0b0eca8a5200f5e06c01f1ebed83..fa1417731fdad3cd2734af99e128db449d16fe68 100644 (file)
@@ -56,7 +56,7 @@
 
 /* Buffer, its dma address and lock */
 struct buf_data {
-       u8 buf[RN_BUF_SIZE];
+       u8 buf[RN_BUF_SIZE] ____cacheline_aligned;
        dma_addr_t addr;
        struct completion filled;
        u32 hw_desc[DESC_JOB_O_LEN];