netdev.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH net-next 0/6] xfrm & bonding: Correct use of xso.real_dev
@ 2025-04-07 13:35 Cosmin Ratiu
  2025-04-07 13:35 ` [PATCH net-next 1/6] net/mlx5: Avoid using xso.real_dev unnecessarily Cosmin Ratiu
                   ` (5 more replies)
  0 siblings, 6 replies; 13+ messages in thread
From: Cosmin Ratiu @ 2025-04-07 13:35 UTC (permalink / raw)
  To: netdev, cratiu
  Cc: Hangbin Liu, Jay Vosburgh, Andrew Lunn, David S . Miller,
	Eric Dumazet, Jakub Kicinski, Paolo Abeni, Nikolay Aleksandrov,
	Simon Horman, Saeed Mahameed, Tariq Toukan, Jianbo Liu,
	Steffen Klassert, Herbert Xu, Ayush Sawal, Tony Nguyen,
	Przemek Kitszel, Sunil Goutham, Geetha sowjanya,
	Subbaraya Sundeep, hariprasad, Bharat Bhushan, Louis Peens,
	Leon Romanovsky, linux-kselftest

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")

Cosmin Ratiu (6):
Cleaning up unnecessary uses of xso.real_dev:
  net/mlx5: Avoid using xso.real_dev unnecessarily
  xfrm: Use xdo.dev instead of xdo.real_dev
  xfrm: Remove unneeded device check from validate_xmit_xfrm
Refactoring device operations to get an explicit device pointer:
  xfrm: Add explicit dev to .xdo_dev_state_{add,delete,free}
Fixing a bonding xfrm state migration bug:
  bonding: Mark active offloaded xfrm_states
Fixing long standing races in bonding:
  bonding: Fix multiple long standing offload races

 Documentation/networking/xfrm_device.rst      | 10 +-
 drivers/net/bonding/bond_main.c               | 93 +++++++++++--------
 .../net/ethernet/chelsio/cxgb4/cxgb4_main.c   | 20 ++--
 .../inline_crypto/ch_ipsec/chcr_ipsec.c       | 18 ++--
 .../net/ethernet/intel/ixgbe/ixgbe_ipsec.c    | 40 ++++----
 drivers/net/ethernet/intel/ixgbevf/ipsec.c    | 20 ++--
 .../marvell/octeontx2/nic/cn10k_ipsec.c       | 18 ++--
 .../mellanox/mlx5/core/en_accel/ipsec.c       | 28 +++---
 .../mellanox/mlx5/core/en_accel/ipsec.h       |  1 +
 .../net/ethernet/netronome/nfp/crypto/ipsec.c | 11 +--
 drivers/net/netdevsim/ipsec.c                 | 15 ++-
 include/linux/netdevice.h                     | 10 +-
 include/net/xfrm.h                            |  8 ++
 net/xfrm/xfrm_device.c                        | 13 +--
 net/xfrm/xfrm_state.c                         | 16 ++--
 15 files changed, 175 insertions(+), 146 deletions(-)

-- 
2.45.0


^ permalink raw reply	[flat|nested] 13+ messages in thread

end of thread, other threads:[~2025-04-09 14:33 UTC | newest]

Thread overview: 13+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-04-07 13:35 [PATCH net-next 0/6] xfrm & bonding: Correct use of xso.real_dev Cosmin Ratiu
2025-04-07 13:35 ` [PATCH net-next 1/6] net/mlx5: Avoid using xso.real_dev unnecessarily Cosmin Ratiu
2025-04-08 17:06   ` Tariq Toukan
2025-04-07 13:35 ` [PATCH net-next 2/6] xfrm: Use xdo.dev instead of xdo.real_dev Cosmin Ratiu
2025-04-07 13:35 ` [PATCH net-next 3/6] xfrm: Remove unneeded device check from validate_xmit_xfrm Cosmin Ratiu
2025-04-07 13:35 ` [PATCH net-next 4/6] xfrm: Add explicit dev to .xdo_dev_state_{add,delete,free} Cosmin Ratiu
2025-04-08 23:20   ` Jakub Kicinski
2025-04-09 14:08     ` Cosmin Ratiu
2025-04-09 12:30   ` kernel test robot
2025-04-07 13:35 ` [PATCH net-next 5/6] bonding: Mark active offloaded xfrm_states Cosmin Ratiu
2025-04-07 13:35 ` [PATCH net-next 6/6] bonding: Fix multiple long standing offload races Cosmin Ratiu
2025-04-08  8:08   ` Hangbin Liu
2025-04-09 14:33     ` Cosmin Ratiu

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).