From 25b01723ddc8bcd2993eb4b21e4e61164f55fa95 Mon Sep 17 00:00:00 2001 From: "Jason A. Donenfeld" Date: Tue, 22 Dec 2020 21:34:21 +0100 Subject: [PATCH] device: fix alignment of peer stats member This was shifted by 2 bytes when making persistent keepalive into a u32. Fix it by placing it after the aligned region. Fixes: e739ff7 ("device: fix persistent_keepalive_interval data races") Signed-off-by: Jason A. Donenfeld --- device/peer.go | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/device/peer.go b/device/peer.go index 73e6083..8006b9f 100644 --- a/device/peer.go +++ b/device/peer.go @@ -28,7 +28,6 @@ type Peer struct { device *Device endpoint conn.Endpoint persistentKeepaliveInterval uint32 // accessed atomically - disableRoaming bool // These fields are accessed with atomic operations, which must be // 64-bit aligned even on 32-bit platforms. Go guarantees that an @@ -41,6 +40,8 @@ type Peer struct { lastHandshakeNano int64 // nano seconds since epoch } + disableRoaming bool + timers struct { retransmitHandshake *Timer sendKeepalive *Timer