]> git.hungrycats.org Git - linux/commitdiff
crypto: sha - Handle unaligned input data in generic sha256 and sha512.
authorDavid S. Miller <davem@davemloft.net>
Thu, 2 Oct 2014 06:52:37 +0000 (14:52 +0800)
committerJiri Slaby <jslaby@suse.cz>
Thu, 9 Apr 2015 11:14:26 +0000 (13:14 +0200)
commit be34c4ef693ff5c10f55606dbd656ddf0b4a8340 upstream.

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>
Signed-off-by: Jiri Slaby <jslaby@suse.cz>
crypto/sha256_generic.c
crypto/sha512_generic.c

index 136381bdd48d2203e71e177f327a1598834f0299..f85b1340e45970a7cfaac6b0de2563fa7becbe92 100644 (file)
@@ -24,6 +24,7 @@
 #include <linux/types.h>
 #include <crypto/sha.h>
 #include <asm/byteorder.h>
+#include <asm/unaligned.h>
 
 static inline u32 Ch(u32 x, u32 y, u32 z)
 {
@@ -42,7 +43,7 @@ static inline u32 Maj(u32 x, u32 y, u32 z)
 
 static inline void LOAD_OP(int I, u32 *W, const u8 *input)
 {
-       W[I] = __be32_to_cpu( ((__be32*)(input))[I] );
+       W[I] = get_unaligned_be32((__u32 *)input + I);
 }
 
 static inline void BLEND_OP(int I, u32 *W)
index 6c6d901a7cc1bca6c90613c077dbb3a4cfaadfc5..13a23e169a7befeac87ba675d68539220167ede1 100644 (file)
@@ -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)