diff options
author | Jason A. Donenfeld <Jason@zx2c4.com> | 2021-02-09 15:30:32 +0100 |
---|---|---|
committer | Jason A. Donenfeld <Jason@zx2c4.com> | 2021-02-09 15:37:04 +0100 |
commit | d7bc7508e57d6227646f6aa81e5393a41a904518 (patch) | |
tree | 6854e627bb98d6d468c4fefe47d34d2004bb4f2e | |
parent | d6e76fdbd6bae64a08662eb19d3634adb4881155 (diff) |
device: fix alignment on 32-bit machines and test for it
The test previously checked the offset within a substruct, not the
offset within the allocated struct, so this adds the two together.
It then fixes an alignment crash on 32-bit machines.
Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
-rw-r--r-- | device/alignment_test.go | 3 | ||||
-rw-r--r-- | device/device.go | 7 |
2 files changed, 2 insertions, 8 deletions
diff --git a/device/alignment_test.go b/device/alignment_test.go index 46baeb1..a918112 100644 --- a/device/alignment_test.go +++ b/device/alignment_test.go @@ -61,6 +61,5 @@ func TestDeviceAlignment(t *testing.T) { field.Type.Align(), ) } - - checkAlignment(t, "Device.rate.underLoadUntil", unsafe.Offsetof(d.rate.underLoadUntil)) + checkAlignment(t, "Device.rate.underLoadUntil", unsafe.Offsetof(d.rate)+unsafe.Offsetof(d.rate.underLoadUntil)) } diff --git a/device/device.go b/device/device.go index 895c9db..cb0c3ee 100644 --- a/device/device.go +++ b/device/device.go @@ -21,10 +21,6 @@ import ( ) type Device struct { - log *Logger - - // synchronized resources (locks acquired in order) - state struct { // state holds the device's state. It is accessed atomically. // Use the device.deviceState method to read it. @@ -64,8 +60,6 @@ type Device struct { keyMap map[NoisePublicKey]*Peer } - // unprotected / "self-synchronising resources" - allowedips AllowedIPs indexTable IndexTable cookieChecker CookieChecker @@ -94,6 +88,7 @@ type Device struct { ipcMutex sync.RWMutex closed chan struct{} + log *Logger } // deviceState represents the state of a Device. |