forked from brl/citadel
56 lines
1.6 KiB
Diff
56 lines
1.6 KiB
Diff
|
From 7d026a85946a08b8167dcd792ea6660bf6a49e08 Mon Sep 17 00:00:00 2001
|
||
|
From: Yuanjie Huang <Yuanjie.Huang@windriver.com>
|
||
|
Date: Thu, 2 Mar 2017 10:43:56 +0100
|
||
|
Subject: [PATCH] Fix alignment trap triggered by NEON instructions
|
||
|
|
||
|
NEON instruction VLD1.64 was used to copy 64 bits data after type
|
||
|
casting, and they will trigger alignment trap.
|
||
|
This patch uses memcpy to avoid alignment problem.
|
||
|
|
||
|
Upstream-Status: Backport
|
||
|
|
||
|
Signed-off-by: Yuanjie Huang <Yuanjie.Huang@windriver.com>
|
||
|
Signed-off-by: David Oberhollenzer <david.oberhollenzer@sigma-star.at>
|
||
|
---
|
||
|
ubifs-utils/mkfs.ubifs/key.h | 16 ++++++++++------
|
||
|
1 file changed, 10 insertions(+), 6 deletions(-)
|
||
|
|
||
|
diff --git a/ubifs-utils/mkfs.ubifs/key.h b/ubifs-utils/mkfs.ubifs/key.h
|
||
|
index 39379fd..118858b 100644
|
||
|
--- a/ubifs-utils/mkfs.ubifs/key.h
|
||
|
+++ b/ubifs-utils/mkfs.ubifs/key.h
|
||
|
@@ -159,10 +159,12 @@ static inline void data_key_init(union ubifs_key *key, ino_t inum,
|
||
|
*/
|
||
|
static inline void key_write(const union ubifs_key *from, void *to)
|
||
|
{
|
||
|
- union ubifs_key *t = to;
|
||
|
+ __le32 x[2];
|
||
|
|
||
|
- t->j32[0] = cpu_to_le32(from->u32[0]);
|
||
|
- t->j32[1] = cpu_to_le32(from->u32[1]);
|
||
|
+ x[0] = cpu_to_le32(from->u32[0]);
|
||
|
+ x[1] = cpu_to_le32(from->u32[1]);
|
||
|
+
|
||
|
+ memcpy(to, &x, 8);
|
||
|
memset(to + 8, 0, UBIFS_MAX_KEY_LEN - 8);
|
||
|
}
|
||
|
|
||
|
@@ -174,10 +176,12 @@ static inline void key_write(const union ubifs_key *from, void *to)
|
||
|
*/
|
||
|
static inline void key_write_idx(const union ubifs_key *from, void *to)
|
||
|
{
|
||
|
- union ubifs_key *t = to;
|
||
|
+ __le32 x[2];
|
||
|
+
|
||
|
+ x[0] = cpu_to_le32(from->u32[0]);
|
||
|
+ x[1] = cpu_to_le32(from->u32[1]);
|
||
|
|
||
|
- t->j32[0] = cpu_to_le32(from->u32[0]);
|
||
|
- t->j32[1] = cpu_to_le32(from->u32[1]);
|
||
|
+ memcpy(to, &x, 8);
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
--
|
||
|
2.6.1
|