aboutsummaryrefslogtreecommitdiffstatshomepage
Commit message (Collapse)AuthorAgeFilesLines
* noise: compute timestamps from a given base timejd/base-timeJason A. Donenfeld2019-02-042-10/+18
|
* noise: store clamped key instead of raw keyJason A. Donenfeld2019-02-039-18/+18
|
* chacha20poly1305: permit unaligned strides on certain platformsJason A. Donenfeld2019-02-031-18/+14
| | | | | | | The map allocations required to fix this are mostly slower than unaligned paths. Reported-by: Louis Sautier <sbraz@gentoo.org>
* hashtables: decouple hashtable allocations from the main device allocationSultan Alsawaf2019-02-039-25/+49
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The hashtable allocations are quite large, and cause the device allocation in the net framework to stall sometimes while it tries to find a contiguous region that can fit the device struct: [<0000000000000000>] __switch_to+0x94/0xb8 [<0000000000000000>] __alloc_pages_nodemask+0x764/0x7e8 [<0000000000000000>] kmalloc_order+0x20/0x40 [<0000000000000000>] __kmalloc+0x144/0x1a0 [<0000000000000000>] alloc_netdev_mqs+0x5c/0x368 [<0000000000000000>] rtnl_create_link+0x48/0x180 [<0000000000000000>] rtnl_newlink+0x410/0x708 [<0000000000000000>] rtnetlink_rcv_msg+0x190/0x1f8 [<0000000000000000>] netlink_rcv_skb+0x4c/0xf8 [<0000000000000000>] rtnetlink_rcv+0x30/0x40 [<0000000000000000>] netlink_unicast+0x18c/0x208 [<0000000000000000>] netlink_sendmsg+0x19c/0x348 [<0000000000000000>] sock_sendmsg+0x3c/0x58 [<0000000000000000>] ___sys_sendmsg+0x290/0x2b0 [<0000000000000000>] __sys_sendmsg+0x58/0xa0 [<0000000000000000>] SyS_sendmsg+0x10/0x20 [<0000000000000000>] el0_svc_naked+0x34/0x38 [<0000000000000000>] 0xffffffffffffffff To fix the allocation stalls, decouple the hashtable allocations from the device allocation and allocate the hashtables with kvmalloc's implicit __GFP_NORETRY so that the allocations fall back to vmalloc with little resistance. Signed-off-by: Sultan Alsawaf <sultan@kerneltoast.com>
* queueing: more reasonable allocator function conventionJason A. Donenfeld2019-02-033-4/+4
|
* noise: whiten the nanoseconds portion of the timestampJason A. Donenfeld2019-02-031-0/+9
| | | | | This mitigates unrelated sidechannel attacks that think they can turn WireGuard into a useful time oracle.
* highlighter: when subtracting char, cast to unsignedJason A. Donenfeld2019-01-311-2/+2
| | | | Windows.
* systemd: wg-quick should depend on nss-lookup.targetJason A. Donenfeld2019-01-301-2/+2
| | | | | | | Since wg-quick(8) calls wg(8) which does hostname lookups, we should probably only run this after we're allowed to look up hostnames. Reported-by: Anton Castelli <anton.c42@gmail.com>
* tools: remove unused check phony declarationJason A. Donenfeld2019-01-241-1/+1
|
* wg-quick: freebsd: allow loopback to workJason A. Donenfeld2019-01-241-1/+1
| | | | | | | | | | | | FreeBSD adds a route for point-to-point destination addresses. We don't really want to specify any destination address, but unfortunately we have to. Before we tried to cheat by giving our own address as the destination, but this had the unfortunate effect of preventing loopback from working on our local ip address. We work around this with yet another kludge: we set the destination address to 127.0.0.1. Since 127.0.0.1 is already assigned to an interface, this has the same effect of not specifying a destination address, and therefore we accomplish the intended behavior.
* version: bump snapshot0.0.20190123Jason A. Donenfeld2019-01-232-2/+2
|
* netlink: use __kernel_timespec for handshake timeJason A. Donenfeld2019-01-2310-13/+45
|
* contrib: introduce simple highlighter libraryJason A. Donenfeld2019-01-238-0/+904
|
* global: normalize -> clampJason A. Donenfeld2019-01-239-26/+19
|
* keygen-html: bring back pure javascript implementationJason A. Donenfeld2019-01-236-139/+186
| | | | | | | This reverts commit 9d5baf7d1d14ca7eb0852b41566330259229d489. BenoƮt Viguier has proofs that values will stay well within 2^53. We also have an improved carry function that's much simpler.
* qemu: enable FP on MIPSJason A. Donenfeld2019-01-234-0/+4
| | | | This is a change for Linux 5.0.
* qemu: version bump to bash 5.0Jason A. Donenfeld2019-01-231-1/+1
|
* Kconfig: IPsec isn't IPSecJason A. Donenfeld2019-01-232-2/+2
| | | | Reported-by: Raf Czlonka <rczlonka@gmail.com>
* ratelimiter: totalram_pages is now a functionJason A. Donenfeld2019-01-232-2/+6
| | | | Reported-by: Alex Xu <alex@alxu.ca>
* noise: replace getnstimeofday64 with ktime_get_real_ts64Jason A. Donenfeld2019-01-232-2/+2
| | | | | | | | | The former was just a wrapper around the latter, and so upstream is now removing it. Also adjust the compat kludge to deal with this. Reported-by: Alex Xu <alex@alxu.ca>
* ratelimiter: build tests with !IPV6Jason A. Donenfeld2019-01-231-5/+2
|
* qemu: version bump kernelJason A. Donenfeld2019-01-231-1/+1
|
* global: update copyrightJason A. Donenfeld2019-01-07135-136/+136
|
* netlink: auth socket changes against namespace of socketJason A. Donenfeld2018-12-301-0/+7
| | | | | | | | | | | | | | | | | | In WireGuard, the underlying UDP socket lives in the namespace where the interface was created and doesn't move if the interface is moved. This allows one to create the interface in some privileged place that has Internet access, and then move it into a container namespace that only has the WireGuard interface for egress. Consider the following situation: 1. Interface created in namespace A. Socket therefore lives in namespace A. 2. Interface moved to namespace B. Socket remains in namespace A. 3. Namespace B now has access to the interface and changes the listen port and/or fwmark of socket. Change is reflected in namespace A. This behavior is arguably _fine_ and perhaps even expected or acceptable. But there's also an argument to be made that B should have A's cred to do so. So, this patch adds a simple ns_capable check.
* tools: curve25519: handle unaligned loads/stores safelyJason A. Donenfeld2018-12-202-5/+19
| | | | Reported-by: Chris Hewitt <chris@chrishewitt.net>
* version: bump snapshot0.0.20181218Jason A. Donenfeld2018-12-182-2/+2
|
* makefile: use immediate expansion and use correct template patternsJason A. Donenfeld2018-12-184-7/+9
|
* netns: nmap != ncatJason A. Donenfeld2018-12-181-4/+4
|
* wg-quick: bring interface up while setting MTUAaron Jones2018-12-181-9/+4
| | | | | | | This avoids another ip(8) invocation for little benefit. Confirmed to work with iproute2 and busybox. Signed-off-by: Aaron Jones <aaronmdjones@gmail.com>
* compat: account for Clang CFIJason A. Donenfeld2018-12-121-1/+1
|
* chacha20: do not define unused asm functionJason A. Donenfeld2018-12-071-4/+2
| | | | | | This causes RAP to be unhappy, and we're not using it anyway. Reported-by: Ivan J. <parazyd@dyne.org>
* embeddable-wg-library: do not warn on unrecognized netlink attributesJason A. Donenfeld2018-12-071-15/+1
| | | | This is a follow up of bcf8684c9ec90fe0d283a67d1654d05fb3eae019.
* compat: don't undef BUILD_BUG_ON for Clang >=8Nathan Chancellor2018-12-071-1/+1
| | | | | | | | | | | | | | | | | This has been fixed upstream. To keep this hack working for toolchains that don't have it, use CONFIG_CLANG_VERSION, which was added in commit 469cb7376c06 ("kconfig: add CC_IS_CLANG and CLANG_VERSION"), introduced in 4.18. I have added the '!defined(CONFIG_CLANG_VERSION)' to keep the hack around for Android. Most custom kernel developers are using AOSP's Clang, which currently does not have the fix and might not for a while (although it is probably on Google's mind given that it has been an issue for ChromeOS on 4.19: https://crbug.com/897215). I have verified this change against my Pixel 2 kernel and 4.20-rc3 with the latest ToT Clang. Link: https://github.com/ClangBuiltLinux/linux/issues/7 Signed-off-by: Nathan Chancellor <natechancellor@gmail.com>
* chacha20,poly1305: simplify perlasm fancinessJason A. Donenfeld2018-12-073-75/+69
|
* jerry-rig: replace S_shipped with plJason A. Donenfeld2018-11-191-1/+1
|
* version: bump snapshot0.0.20181119Jason A. Donenfeld2018-11-192-2/+2
|
* chacha20,poly1305: do not use xlateJason A. Donenfeld2018-11-193-1496/+73
|
* poly1305: make frame pointers for auxiliary callsSamuel Neves2018-11-171-31/+43
| | | | Signed-off-by: Samuel Neves <sneves@dei.uc.pt>
* crypto: better path resolution and more specific generated .SJason A. Donenfeld2018-11-162-14/+9
|
* chacha20,poly1305: don't do compiler testing in generator and remove xor helperJason A. Donenfeld2018-11-152-30/+39
|
* crypto: resolve target prefix on buggy kernelsJason A. Donenfeld2018-11-151-1/+6
| | | | | We also move to .SECONDARY, since older kernels don't use targets like that.
* poly1305: cleanup leftover debugging changesJason A. Donenfeld2018-11-151-3/+3
|
* poly1305: only export neon symbols when in useJason A. Donenfeld2018-11-151-2/+6
|
* chacha20,poly1305: fix up for win64Samuel Neves2018-11-152-27/+29
| | | | | | | These don't help us, but it is important to keep this working for when it's re-added to cryptogams. Signed-off-by: Samuel Neves <sneves@dei.uc.pt>
* version: bump snapshot0.0.20181115Jason A. Donenfeld2018-11-152-2/+2
|
* perlasm: avoid rep retJason A. Donenfeld2018-11-151-1/+1
| | | | | | | | The original hardcodes returns as .byte 0xf3,0xc3, aka "rep ret". We replace this by "ret". "rep ret" was meant to help with AMD K8 chips, cf. http://repzret.org/p/repzret. It makes no sense to continue to use this kludge for code that won't even run on ancient AMD chips.
* poly1305: specialize to wireguardJason A. Donenfeld2018-11-151-11/+20
|
* chacha20: specialize to wireguardJason A. Donenfeld2018-11-152-20/+38
|
* perlasm: cleanup whitespaceJason A. Donenfeld2018-11-151-5/+5
|
* poly1305: adjust to kernelSamuel Neves2018-11-151-220/+291
| | | | Signed-off-by: Samuel Neves <sneves@dei.uc.pt>