Netdev List
 help / color / mirror / Atom feed
* [PATCH v2 net-next 0/8] vxlan: convert configuration to RCU and drop RTNL in vxlan_fill_info()
@ 2026-09-06 18:01 Eric Dumazet
  2026-09-06 18:01 ` [PATCH v2 net-next 1/8] vxlan: initialize _md in vxlan_xmit_one() Eric Dumazet
                   ` (8 more replies)
  0 siblings, 9 replies; 17+ messages in thread
From: Eric Dumazet @ 2026-09-06 18:01 UTC (permalink / raw)
  To: David S . Miller, Jakub Kicinski, Paolo Abeni
  Cc: Simon Horman, Andrew Lunn, Ido Schimmel, Kuniyuki Iwashima,
	netdev, eric.dumazet, Eric Dumazet

This series converts VXLAN device configuration (struct vxlan_config) to RCU
protection and removes the RTNL dependency from vxlan_fill_info(), enabling
lockless netlink link dumps (RTM_GETLINK) for VXLAN devices.

Patches 1-2 fix pre-existing issues uncovered while auditing RCU and VNIFILTER
paths:
  - Patch 1 zero-initializes _md on the stack in vxlan_xmit_one() to avoid
    leaking uninitialized stack bytes into GBP header fields when metadata
    options are absent.
  - Patch 2 fixes lockless iteration over vg->vni_list in
    vxlan_vnifilter_dump_dev() to use list_for_each_entry_rcu(), and clears
    cb->args[1] on early returns to avoid leaking dump state across devices.

Patches 3-6 convert vxlan->cfg to an RCU-protected pointer:
  - Patch 3 refactors RX, TX, MDB, and VNIFILTER helpers to take a
    const struct vxlan_config * pointer parameter.
  - Patch 4 moves the internal runtime state flag VXLAN_F_MDB out of
    struct vxlan_config into atomic bitops (VXLAN_DEV_F_MDB) on
    vxlan->flags, avoiding RCU reallocation of vxlan_config on MDB updates.
  - Patch 5 converts struct vxlan_config from an embedded struct in
    struct vxlan_dev to a dynamically allocated pointer.
  - Patch 6 adds RCU annotations (__rcu), updates configuration changes to
    publish new configs via rcu_assign_pointer() and free old ones via
    kfree_rcu(), and protects readers under rcu_read_lock().

Patches 7-8 clean up redundant state and remove RTNL from dumps:
  - Patch 7 removes vxlan->default_dst (struct vxlan_rdst), tracks the
    lower netdevice via vxlan->lowerdev, and switches remaining readers to
    access attributes directly from vxlan->cfg.
  - Patch 8 updates vxlan_fill_info() to dereference vxlan->cfg under
    rcu_read_lock() instead of relying on RTNL.

v2: removed patch 2/9 from v1 (Kuniyuki)
    Added Reviewed-by: tags from Kuniyuki.

Eric Dumazet (8):
  vxlan: initialize _md in vxlan_xmit_one()
  vxlan: vnifilter: use list_for_each_entry_rcu() in
    vxlan_vnifilter_dump_dev()
  vxlan: pass vxlan_config pointer to helper functions
  vxlan: move VXLAN_F_MDB to struct vxlan_dev flags
  vxlan: dynamically allocate struct vxlan_config
  vxlan: convert configuration to RCU protection
  vxlan: remove default_dst and use vxlan_config and lowerdev
  vxlan: no longer rely on RTNL in vxlan_fill_info()

 .../mellanox/mlx5/core/en/tc_tun_vxlan.c      |  11 +-
 .../mellanox/mlxsw/spectrum_nve_vxlan.c       |  14 +-
 .../mellanox/mlxsw/spectrum_switchdev.c       |  57 +-
 drivers/net/vxlan/vxlan_core.c                | 720 +++++++++++-------
 drivers/net/vxlan/vxlan_mdb.c                 |  45 +-
 drivers/net/vxlan/vxlan_multicast.c           |  80 +-
 drivers/net/vxlan/vxlan_private.h             |  18 +-
 drivers/net/vxlan/vxlan_vnifilter.c           |  74 +-
 include/net/vxlan.h                           |  11 +-
 9 files changed, 622 insertions(+), 408 deletions(-)

-- 
2.55.0.979.g7e5102b832-goog


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

end of thread, other threads:[~2026-09-11  2:15 UTC | newest]

Thread overview: 17+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-09-06 18:01 [PATCH v2 net-next 0/8] vxlan: convert configuration to RCU and drop RTNL in vxlan_fill_info() Eric Dumazet
2026-09-06 18:01 ` [PATCH v2 net-next 1/8] vxlan: initialize _md in vxlan_xmit_one() Eric Dumazet
2026-09-06 18:01 ` [PATCH v2 net-next 2/8] vxlan: vnifilter: use list_for_each_entry_rcu() in vxlan_vnifilter_dump_dev() Eric Dumazet
2026-09-08 18:03   ` netdev-bot+sashiko
2026-09-06 18:01 ` [PATCH v2 net-next 3/8] vxlan: pass vxlan_config pointer to helper functions Eric Dumazet
2026-09-06 18:01 ` [PATCH v2 net-next 4/8] vxlan: move VXLAN_F_MDB to struct vxlan_dev flags Eric Dumazet
2026-09-06 18:01 ` [PATCH v2 net-next 5/8] vxlan: dynamically allocate struct vxlan_config Eric Dumazet
2026-09-08 18:03   ` netdev-bot+sashiko
2026-09-10  1:35     ` Jakub Kicinski
2026-09-11  2:15       ` Eric Dumazet
2026-09-06 18:01 ` [PATCH v2 net-next 6/8] vxlan: convert configuration to RCU protection Eric Dumazet
2026-09-08 18:03   ` netdev-bot+sashiko
2026-09-06 18:01 ` [PATCH v2 net-next 7/8] vxlan: remove default_dst and use vxlan_config and lowerdev Eric Dumazet
2026-09-08 18:03   ` netdev-bot+sashiko
2026-09-06 18:01 ` [PATCH v2 net-next 8/8] vxlan: no longer rely on RTNL in vxlan_fill_info() Eric Dumazet
2026-09-08 18:03   ` netdev-bot+sashiko
2026-09-10  1:40 ` [PATCH v2 net-next 0/8] vxlan: convert configuration to RCU and drop " patchwork-bot+netdevbpf

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox