summaryrefslogtreecommitdiff
path: root/crypto/sha512_generic.c
diff options
context:
space:
mode:
authorDavid S. Miller <davem@davemloft.net>2014-10-02 14:52:37 +0800
committerHerbert Xu <herbert@gondor.apana.org.au>2014-10-02 14:52:37 +0800
commita666510bebfd1215501196ab2b9853ae1d53be6c (patch)
tree3ab9ae4fb3a7c16852457719feea43c7e95418bd /crypto/sha512_generic.c
parent340274c558571a7a2733b66c7c0367ae9f108e03 (diff)
downloadlinux-crypto-a666510bebfd1215501196ab2b9853ae1d53be6c.tar.gz
linux-crypto-a666510bebfd1215501196ab2b9853ae1d53be6c.zip
crypto: sha - Handle unaligned input data in generic sha256 and sha512.
Like SHA1, use get_unaligned_be*() on the raw input data. Reported-by: Bob Picco <bob.picco@oracle.com> Signed-off-by: David S. Miller <davem@davemloft.net> Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
Diffstat (limited to 'crypto/sha512_generic.c')
-rw-r--r--crypto/sha512_generic.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/crypto/sha512_generic.c b/crypto/sha512_generic.c
index 6ed124f3..6dde57dc 100644
--- a/crypto/sha512_generic.c
+++ b/crypto/sha512_generic.c
@@ -20,6 +20,7 @@
#include <crypto/sha.h>
#include <linux/percpu.h>
#include <asm/byteorder.h>
+#include <asm/unaligned.h>
static inline u64 Ch(u64 x, u64 y, u64 z)
{
@@ -68,7 +69,7 @@ static const u64 sha512_K[80] = {
static inline void LOAD_OP(int I, u64 *W, const u8 *input)
{
- W[I] = __be64_to_cpu( ((__be64*)(input))[I] );
+ W[I] = get_unaligned_be64((__u64 *)input + I);
}
static inline void BLEND_OP(int I, u64 *W)