From: Steffen Klassert Date: Thu, 17 Apr 2025 08:52:07 +0000 (+0200) Subject: Merge branch 'xfrm & bonding: Correct use of xso.real_dev' X-Git-Tag: v6.16-rc1~132^2~31^2~4 X-Git-Url: https://www.infradead.org/git/?a=commitdiff_plain;h=197c2974cb49495925783220b07f5cd0c5ceec08;p=linux.git Merge branch 'xfrm & bonding: Correct use of xso.real_dev' Cosmin Ratiu says: ==================== This patch series was motivated by fixing a few bugs in the bonding driver related to xfrm state migration on device failover. struct xfrm_dev_offload has two net_device pointers: dev and real_dev. The first one is the device the xfrm_state is offloaded on and the second one is used by the bonding driver to manage the underlying device xfrm_states are actually offloaded on. When bonding isn't used, the two pointers are the same. This causes confusion in drivers: Which device pointer should they use? If they want to support bonding, they need to only use real_dev and never look at dev. Furthermore, real_dev is used without proper locking from multiple code paths and changing it is dangerous. See commit [1] for example. This patch series clears things out by removing all uses of real_dev from outside the bonding driver. Then, the bonding driver is refactored to fix a couple of long standing races and the original bug which motivated this patch series. [1] commit f8cde9805981 ("bonding: fix xfrm real_dev null pointer dereference") v2 -> v3: Added a comment with locking expectations for real_dev. Removed unnecessary bond variable from bond_ipsec_del_sa(). v1 -> v2: Added missing kdoc for various functions. Made bond_ipsec_del_sa() use xso.real_dev instead of curr_active_slave. ==================== Signed-off-by: Steffen Klassert --- 197c2974cb49495925783220b07f5cd0c5ceec08