mirror of
https://git.yoctoproject.org/git/poky
synced 2026-01-01 13:58:04 +00:00
mtd-utils: 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. (From OE-Core rev: a31080021ad3ecfb92220dcb8c717928db268f1e) (From OE-Core rev: bb3606e8312bf339bb888cd5b0bc7e6190e971f7) Signed-off-by: Yuanjie Huang <Yuanjie.Huang@windriver.com> Signed-off-by: Jackie Huang <jackie.huang@windriver.com> Signed-off-by: Ross Burton <ross.burton@intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org> Signed-off-by: Armin Kuster <akuster808@gmail.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
parent
c8279678d4
commit
5211fb73f0
|
|
@ -0,0 +1,44 @@
|
|||
Upstream-Status: Pending
|
||||
|
||||
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.
|
||||
|
||||
Signed-off-by: Yuanjie Huang <Yuanjie.Huang@windriver.com>
|
||||
|
||||
diff --git a/mkfs.ubifs/key.h b/mkfs.ubifs/key.h
|
||||
index d3a02d4..e7e9218 100644
|
||||
--- a/mkfs.ubifs/key.h
|
||||
+++ b/mkfs.ubifs/key.h
|
||||
@@ -141,10 +141,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);
|
||||
}
|
||||
|
||||
@@ -156,10 +158,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);
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -10,6 +10,7 @@ LIC_FILES_CHKSUM = "file://COPYING;md5=0636e73ff0215e8d672dc4c32c317bb3 \
|
|||
SRCREV = "9f107132a6a073cce37434ca9cda6917dd8d866b"
|
||||
SRC_URI = "git://git.infradead.org/mtd-utils.git \
|
||||
file://add-exclusion-to-mkfs-jffs2-git-2.patch \
|
||||
file://fix-armv7-neon-alignment.patch \
|
||||
"
|
||||
|
||||
PV = "1.5.1+git${SRCPV}"
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user