From d7f936190e8d8ad3f2c447c3e59d754501c44884 Mon Sep 17 00:00:00 2001 From: Hariprasad Govindharajan Date: Tue, 30 Jul 2019 14:26:38 +0100 Subject: [PATCH] examples/l3fwd: fix unaligned memory access on x86 Fix unaligned memory access when reading IPv6 header which leads to segmentation fault by changing aligned memory read to unaligned memory read. Bugzilla ID: 279 Fixes: 64d3955de1de ("examples/l3fwd: fix ARM build") Cc: stable@dpdk.org Signed-off-by: Hariprasad Govindharajan Reviewed-by: Bruce Richardson Reviewed-by: Jerin Jacob Reviewed-by: David Christensen Reviewed-by: Herakliusz Lipiec Tested-by: Herakliusz Lipiec --- examples/l3fwd/l3fwd_em.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/examples/l3fwd/l3fwd_em.c b/examples/l3fwd/l3fwd_em.c index 5f499e0054..74a7c8fa47 100644 --- a/examples/l3fwd/l3fwd_em.c +++ b/examples/l3fwd/l3fwd_em.c @@ -287,7 +287,11 @@ em_get_ipv6_dst_port(void *ipv6_hdr, uint16_t portid, void *lookup_struct) * Get part of 5 tuple: dst IP address lower 96 bits * and src IP address higher 32 bits. */ +#if defined RTE_ARCH_X86 + key.xmm[1] = _mm_loadu_si128(data1); +#else key.xmm[1] = *(xmm_t *)data1; +#endif /* * Get part of 5 tuple: dst port and src port -- 2.20.1