opnsense-src/sys/dev/wg
Kyle Evans 590e02d3c0 if_wg: use proper barriers around pkt->p_state
Without appropriate load-synchronization to pair with store barriers in
wg_encrypt() and wg_decrypt(), the compiler and hardware are often
allowed to reorder these loads in wg_deliver_out() and wg_deliver_in()
such that we end up with a garbage or intermediate mbuf that we try to
pass on.  The issue is particularly prevalent with the weaker
memory models of !x86 platforms.

Switch from the big-hammer wmb() to more explicit acq/rel atomics to
both make it obvious what we're syncing up with, and to avoid somewhat
hefty fences on platforms that don't necessarily need this.

With this patch, my dual-iperf3 reproducer is dramatically more stable
than it is without on aarch64.

PR:		264115
Reviewed by:	andrew, zlei

(cherry picked from commit 3705d679a6344c957cae7a1b6372a8bfb8c44f0e)
2024-03-22 10:21:39 -05:00
..
compat.h wg: Drop the compat shim for sbcreatecontrol(). 2022-11-11 14:18:48 -08:00
crypto.h wg: Trim compat shims for versions older than current stable/13. 2022-10-28 13:36:13 -07:00
if_wg.c if_wg: use proper barriers around pkt->p_state 2024-03-22 10:21:39 -05:00
if_wg.h sys: Remove $FreeBSD$: two-line .h pattern 2023-08-16 11:54:11 -06:00
version.h
wg_cookie.c wg: fix a number of issues with module load failure handling 2023-06-23 12:00:09 -05:00
wg_cookie.h
wg_crypto.c wg: Trim compat shims for versions older than current stable/13. 2022-10-28 13:36:13 -07:00
wg_noise.c if_wg: fix access to noise_local->l_has_identity and l_private 2024-01-29 23:37:33 -06:00
wg_noise.h