summaryrefslogtreecommitdiffstats
path: root/lib/chacha20.c
diff options
context:
space:
mode:
authorEric Biggers <ebiggers@google.com>2017-11-22 11:51:39 -0800
committerHerbert Xu <herbert@gondor.apana.org.au>2017-11-29 17:33:33 +1100
commit9f480faec58cd6197a007ea1dcac6b7c3daf1139 (patch)
treebd5107e627a9013bbbfc290ceccea218d9393f66 /lib/chacha20.c
parent796c99fbd7e20a8d78189fc0166a524d78f635a0 (diff)
downloadlinux-0-day-9f480faec58cd6197a007ea1dcac6b7c3daf1139.tar.gz
linux-0-day-9f480faec58cd6197a007ea1dcac6b7c3daf1139.tar.xz
crypto: chacha20 - Fix keystream alignment for chacha20_block()
When chacha20_block() outputs the keystream block, it uses 'u32' stores directly. However, the callers (crypto/chacha20_generic.c and drivers/char/random.c) declare the keystream buffer as a 'u8' array, which is not guaranteed to have the needed alignment. Fix it by having both callers declare the keystream as a 'u32' array. For now this is preferable to switching over to the unaligned access macros because chacha20_block() is only being used in cases where we can easily control the alignment (stack buffers). Signed-off-by: Eric Biggers <ebiggers@google.com> Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
Diffstat (limited to 'lib/chacha20.c')
-rw-r--r--lib/chacha20.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/lib/chacha20.c b/lib/chacha20.c
index 250ceed9ec9a8..29d3801dee24f 100644
--- a/lib/chacha20.c
+++ b/lib/chacha20.c
@@ -21,7 +21,7 @@ static inline u32 rotl32(u32 v, u8 n)
return (v << n) | (v >> (sizeof(v) * 8 - n));
}
-extern void chacha20_block(u32 *state, void *stream)
+void chacha20_block(u32 *state, u32 *stream)
{
u32 x[16], *out = stream;
int i;