diff options
author | 2025-04-17 10:52:07 +0200 | |
---|---|---|
committer | 2025-04-17 10:52:07 +0200 | |
commit | 197c2974cb49495925783220b07f5cd0c5ceec08 (patch) | |
tree | e8e20a650ca7aeb55410b9e00ce8f034924ae3c8 /scripts/gdb/linux/tasks.py | |
parent | xfrm: Remove unnecessary strscpy_pad() size arguments (diff) | |
parent | bonding: Fix multiple long standing offload races (diff) | |
download | wireguard-linux-197c2974cb49495925783220b07f5cd0c5ceec08.tar.xz wireguard-linux-197c2974cb49495925783220b07f5cd0c5ceec08.zip |
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 <steffen.klassert@secunet.com>
Diffstat (limited to 'scripts/gdb/linux/tasks.py')
0 files changed, 0 insertions, 0 deletions