Subject: [PATCH 06/26] net: bridge: enfore alignment for ethernet address

From: Thomas Martitz <[email-masked]>
Date: Thu, 25 Jun 2020 14:26:03 +0200

[ Upstream commit db7202dec92e6caa2706c21d6fc359af318bde2e ]

The eth_addr member is passed to ether_addr functions that require
2-byte alignment, therefore the member must be properly aligned
to avoid unaligned accesses.

The problem is in place since the initial merge of multicast to unicast:
commit 6db6f0eae6052b70885562e1733896647ec1d807 bridge: multicast to unicast

Fixes: 6db6f0eae605 ("bridge: multicast to unicast")
Cc: Roopa Prabhu <[email-masked]>
Cc: Nikolay Aleksandrov <[email-masked]>
Cc: David S. Miller <[email-masked]>
Cc: Jakub Kicinski <[email-masked]>
Cc: Felix Fietkau <[email-masked]>
Cc: [email-masked]
Signed-off-by: Thomas Martitz <[email-masked]>
Acked-by: Nikolay Aleksandrov <[email-masked]>
Signed-off-by: David S. Miller <[email-masked]>
---
 net/bridge/br_private.h | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/net/bridge/br_private.h b/net/bridge/br_private.h
index ce2ab14ee605..cecb4223440e 100644
--- a/net/bridge/br_private.h
+++ b/net/bridge/br_private.h
@@ -208,8 +208,8 @@ struct net_bridge_port_group {
 	struct rcu_head			rcu;
 	struct timer_list		timer;
 	struct br_ip			addr;
+	unsigned char			eth_addr[ETH_ALEN] __aligned(2);
 	unsigned char			flags;
-	unsigned char			eth_addr[ETH_ALEN];
 };
 
 struct net_bridge_mdb_entry {
-- 
2.26.2