Age | Commit message (Collapse) | Author |
|
So we take a new granular lock to prevent concurrent writes from
racing.
WARNING: DATA RACE
Write at 0x00c0011f2740 by goroutine 27:
golang.org/x/sys/unix.(*SockaddrInet4).sockaddr()
/go/pkg/mod/golang.org/x/sys@v0.0.0-20191105231009-c1f44814a5cd/unix/syscall_linux.go:384
+0x114
golang.org/x/sys/unix.SendmsgN()
/go/pkg/mod/golang.org/x/sys@v0.0.0-20191105231009-c1f44814a5cd/unix/syscall_linux.go:1304
+0x288
golang.zx2c4.com/wireguard/device.send4()
/go/pkg/mod/golang.zx2c4.com/wireguard@v0.0.20191012/device/conn_linux.go:485
+0x11f
golang.zx2c4.com/wireguard/device.(*nativeBind).Send()
/go/pkg/mod/golang.zx2c4.com/wireguard@v0.0.20191012/device/conn_linux.go:268
+0x1d6
golang.zx2c4.com/wireguard/device.(*Peer).SendBuffer()
/go/pkg/mod/golang.zx2c4.com/wireguard@v0.0.20191012/device/peer.go:151
+0x285
golang.zx2c4.com/wireguard/device.(*Peer).SendHandshakeInitiation()
/go/pkg/mod/golang.zx2c4.com/wireguard@v0.0.20191012/device/send.go:163
+0x692
golang.zx2c4.com/wireguard/device.(*Device).RoutineReadFromTUN()
/go/pkg/mod/golang.zx2c4.com/wireguard@v0.0.20191012/device/send.go:318
+0x4b8
Previous write at 0x00c0011f2740 by goroutine 386:
golang.org/x/sys/unix.(*SockaddrInet4).sockaddr()
/go/pkg/mod/golang.org/x/sys@v0.0.0-20191105231009-c1f44814a5cd/unix/syscall_linux.go:384
+0x114
golang.org/x/sys/unix.SendmsgN()
/go/pkg/mod/golang.org/x/sys@v0.0.0-20191105231009-c1f44814a5cd/unix/syscall_linux.go:1304
+0x288
golang.zx2c4.com/wireguard/device.send4()
/go/pkg/mod/golang.zx2c4.com/wireguard@v0.0.20191012/device/conn_linux.go:485
+0x11f
golang.zx2c4.com/wireguard/device.(*nativeBind).Send()
/go/pkg/mod/golang.zx2c4.com/wireguard@v0.0.20191012/device/conn_linux.go:268
+0x1d6
golang.zx2c4.com/wireguard/device.(*Peer).SendBuffer()
/go/pkg/mod/golang.zx2c4.com/wireguard@v0.0.20191012/device/peer.go:151
+0x285
golang.zx2c4.com/wireguard/device.(*Peer).SendHandshakeInitiation()
/go/pkg/mod/golang.zx2c4.com/wireguard@v0.0.20191012/device/send.go:163
+0x692
golang.zx2c4.com/wireguard/device.expiredRetransmitHandshake()
/go/pkg/mod/golang.zx2c4.com/wireguard@v0.0.20191012/device/timers.go:110
+0x40c
golang.zx2c4.com/wireguard/device.(*Peer).NewTimer.func1()
/go/pkg/mod/golang.zx2c4.com/wireguard@v0.0.20191012/device/timers.go:42
+0xd8
Goroutine 27 (running) created at:
golang.zx2c4.com/wireguard/device.NewDevice()
/go/pkg/mod/golang.zx2c4.com/wireguard@v0.0.20191012/device/device.go:322
+0x5e8
main.main()
/go/src/x/main.go:102 +0x58e
Goroutine 386 (finished) created at:
time.goFunc()
/usr/local/go/src/time/sleep.go:168 +0x51
Reported-by: Ben Burkert <ben@benburkert.com>
|
|
Discussed-with: Mathias Hall-Andersen <mathias@hall-andersen.dk>
|
|
Signed-off-by: Jonathan Tooker <jonathan.tooker@netprotect.com>
|
|
|
|
|
|
|
|
Signed-off-by: David Crawshaw <crawshaw@tailscale.io>
|
|
|
|
This enables race-free updates for wg-dynamic and similar tools.
Suggested-by: Thomas Gschwantner <tharre3@gmail.com>
|
|
|
|
It turns out Go isn't passing the pointer properly so we wound up with a
zero port every time.
|
|
|
|
|
|
|
|
|
|
Reported-by: Derrick Pallas <derrick@pallas.us>
|
|
|
|
|
|
Signed-off-by: Matt Layher <mdlayher@gmail.com>
|
|
The rule is to always update them to the full packet size minus UDP/IP
encapsulation for all authenticated packet types.
|
|
More staticcheck fixes:
$ staticcheck ./... | grep S1023
device/noise-helpers.go:45:2: redundant return statement (S1023)
device/noise-helpers.go:54:2: redundant return statement (S1023)
device/noise-helpers.go:64:2: redundant return statement (S1023)
Signed-off-by: Matt Layher <mdlayher@gmail.com>
|
|
Signed-off-by: Matt Layher <mdlayher@gmail.com>
|
|
Simplification found by staticcheck:
$ staticcheck ./... | grep S1012
device/cookie.go:90:5: should use time.Since instead of time.Now().Sub (S1012)
device/cookie.go:127:5: should use time.Since instead of time.Now().Sub (S1012)
device/cookie.go:242:5: should use time.Since instead of time.Now().Sub (S1012)
device/noise-protocol.go:304:13: should use time.Since instead of time.Now().Sub (S1012)
device/receive.go:82:46: should use time.Since instead of time.Now().Sub (S1012)
device/send.go:132:5: should use time.Since instead of time.Now().Sub (S1012)
device/send.go:139:5: should use time.Since instead of time.Now().Sub (S1012)
device/send.go:235:59: should use time.Since instead of time.Now().Sub (S1012)
device/send.go:393:9: should use time.Since instead of time.Now().Sub (S1012)
ratelimiter/ratelimiter.go:79:10: should use time.Since instead of time.Now().Sub (S1012)
ratelimiter/ratelimiter.go:87:10: should use time.Since instead of time.Now().Sub (S1012)
Change applied using:
$ find . -type f -name "*.go" -exec sed -i "s/Now().Sub(/Since(/g" {} \;
Signed-off-by: Matt Layher <mdlayher@gmail.com>
|
|
|
|
Signed-off-by: Matt Layher <mdlayher@gmail.com>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|