diff options
| author | Ralf Lici <ralf@mandelbit.com> | 2026-08-28 16:50:27 +0200 |
|---|---|---|
| committer | Antonio Quartulli <antonio@openvpn.net> | 2026-09-21 11:39:13 +0200 |
| commit | 7d8104988f423572df1f3347ce578037b1043f34 (patch) | |
| tree | ff2c2d2dafdb354feb6e05bbfbe1a1781d9b8bef /include/linux/debugobjects.h | |
| parent | aea934a221ec6a867221e5b765f65f1857befd53 (diff) | |
ovpn: replace bind when clearing stale local source
The UDP output fallback clears bind->local in place when the remembered
source address is no longer usable. The bind is RCU-published and read
locklessly by concurrent TX, so an IPv6 reader can observe a torn
address.
Retry the route lookup with source address autoselection without
modifying the bind. After a successful lookup, revalidate the bind and
route key under peer->lock, reset the dst cache, and best-effort publish
a replacement bind with a wildcard local address.
Do not cache the resolved dst when clearing the local source. Replacing
the source invalidates all per-CPU cache entries, while
dst_cache_set_ip4 and dst_cache_set_ip6 update only the current CPU
slot. The current packet can still use the resolved route; if bind
allocation fails, a later cache miss retries the repair.
Fixes: 08857b5ec5d9 ("ovpn: implement basic TX path (UDP)")
Signed-off-by: Ralf Lici <ralf@mandelbit.com>
Signed-off-by: Antonio Quartulli <antonio@openvpn.net>
Diffstat (limited to 'include/linux/debugobjects.h')
0 files changed, 0 insertions, 0 deletions
