[PATCH] net: ipv6: fix alignment errors on ARM

Sergei Antonov saproj at gmail.com
Wed Jan 18 18:52:18 CET 2023


Commands "ping6" and "tftpboot ... -ipv6" did not work on ARM because
machine code expects 4-byte alignment and some structures from net6.h
are not aligned in memory.

Fix by adding __packed, since it is already used in this file.

Signed-off-by: Sergei Antonov <saproj at gmail.com>
---
 include/net6.h | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/include/net6.h b/include/net6.h
index 9b3de028e6dc..2d7c5a096046 100644
--- a/include/net6.h
+++ b/include/net6.h
@@ -24,7 +24,7 @@ struct in6_addr {
 #define s6_addr		in6_u.u6_addr8
 #define s6_addr16	in6_u.u6_addr16
 #define s6_addr32	in6_u.u6_addr32
-};
+} __packed;
 
 #define IN6ADDRSZ	sizeof(struct in6_addr)
 #define INETHADDRSZ	sizeof(net_ethaddr)
@@ -62,7 +62,7 @@ struct ip6_hdr {
 	u8		hop_limit;
 	struct in6_addr	saddr;
 	struct in6_addr	daddr;
-};
+} __packed;
 #define IP6_HDR_SIZE (sizeof(struct ip6_hdr))
 
 /* struct udp_hdr - User Datagram Protocol header */
@@ -164,7 +164,7 @@ struct icmp6hdr {
 #define icmp6_addrconf_managed	icmp6_dataun.u_nd_ra.managed
 #define icmp6_addrconf_other	icmp6_dataun.u_nd_ra.other
 #define icmp6_rt_lifetime	icmp6_dataun.u_nd_ra.rt_lifetime
-};
+} __packed;
 
 extern struct in6_addr const net_null_addr_ip6;	/* NULL IPv6 address */
 extern struct in6_addr net_gateway6;	/* Our gateways IPv6 address */
-- 
2.34.1



More information about the U-Boot mailing list