[PATCH] lz4: Fix unaligned accesses

karl.beldan at gmail.com karl.beldan at gmail.com
Wed Mar 17 23:31:58 CET 2021


From: Karl Beldan <karl.beldan+oss at gmail.com>

Signed-off-by: Karl Beldan <karl.beldan+oss at gmail.com>
---
 lib/lz4_wrapper.c | 15 ++++++++++++---
 1 file changed, 12 insertions(+), 3 deletions(-)

diff --git a/lib/lz4_wrapper.c b/lib/lz4_wrapper.c
index e0f7d3688e..cdbcd05bd4 100644
--- a/lib/lz4_wrapper.c
+++ b/lib/lz4_wrapper.c
@@ -11,9 +11,18 @@
 #include <linux/types.h>
 #include <asm/unaligned.h>
 
-static u16 LZ4_readLE16(const void *src) { return le16_to_cpu(*(u16 *)src); }
-static void LZ4_copy4(void *dst, const void *src) { *(u32 *)dst = *(u32 *)src; }
-static void LZ4_copy8(void *dst, const void *src) { *(u64 *)dst = *(u64 *)src; }
+static u16 LZ4_readLE16(const void *src)
+{
+	return get_unaligned_le16(src);
+}
+static void LZ4_copy4(void *dst, const void *src)
+{
+	put_unaligned(get_unaligned((const u32 *)src), (u32 *)dst);
+}
+static void LZ4_copy8(void *dst, const void *src)
+{
+	put_unaligned(get_unaligned((const u64 *)src), (u64 *)dst);
+}
 
 typedef  uint8_t BYTE;
 typedef uint16_t U16;
-- 
2.30.2



More information about the U-Boot mailing list