)]}'
{
  "log": [
    {
      "commit": "3d3c92b4711b42169137b2ddf42ed4382e2babdf",
      "tree": "d3c3abbc58fe944222d993777a7f31ec05960e4e",
      "parents": [
        "99935b07b48a2ff696d64996277d89efe8242d37"
      ],
      "author": {
        "name": "Jason A. Donenfeld",
        "email": "Jason@zx2c4.com",
        "time": "Wed Jun 29 15:36:49 2022 +0200"
      },
      "committer": {
        "name": "Jason A. Donenfeld",
        "email": "Jason@zx2c4.com",
        "time": "Wed Jun 29 15:36:49 2022 +0200"
      },
      "message": "compat: drop CentOS 8 Stream support\n\nNobody uses this and it\u0027s impossible to maintain given the current CI\nsituation.\n\nRHEL 7 and 8 release remain for now, though that might not always be the\ncase. See the link for details.\n\nLink: https://lists.zx2c4.com/pipermail/wireguard/2022-June/007664.html\nSuggested-by: Philip J. Perry \u003cphil@elrepo.org\u003e\nSigned-off-by: Jason A. Donenfeld \u003cJason@zx2c4.com\u003e\n"
    },
    {
      "commit": "99935b07b48a2ff696d64996277d89efe8242d37",
      "tree": "7cd2a5a930e2768da1f1f5ab357b494e45fa439b",
      "parents": [
        "18fbcd68a35a892527345dc5679d0b2d860ee004"
      ],
      "author": {
        "name": "Jason A. Donenfeld",
        "email": "Jason@zx2c4.com",
        "time": "Tue Jun 28 12:43:06 2022 +0200"
      },
      "committer": {
        "name": "Jason A. Donenfeld",
        "email": "Jason@zx2c4.com",
        "time": "Tue Jun 28 12:44:18 2022 +0200"
      },
      "message": "compat: do not backport ktime_get_coarse_boottime_ns to c8s\n\nAlso bump the c8s version stamp.\n\nReported-by: Vladimír Beneš \u003cvbenes@redhat.com\u003e\nSigned-off-by: Jason A. Donenfeld \u003cJason@zx2c4.com\u003e\n"
    },
    {
      "commit": "18fbcd68a35a892527345dc5679d0b2d860ee004",
      "tree": "01ca207b3da4223db8fea997d58d986b465db346",
      "parents": [
        "3ec3e822b615e8f07ed0dfc464e026bb508bbcdc"
      ],
      "author": {
        "name": "Jason A. Donenfeld",
        "email": "Jason@zx2c4.com",
        "time": "Mon Jun 27 12:54:37 2022 +0200"
      },
      "committer": {
        "name": "Jason A. Donenfeld",
        "email": "Jason@zx2c4.com",
        "time": "Mon Jun 27 12:54:37 2022 +0200"
      },
      "message": "version: bump\n\nSigned-off-by: Jason A. Donenfeld \u003cJason@zx2c4.com\u003e\n"
    },
    {
      "commit": "3ec3e822b615e8f07ed0dfc464e026bb508bbcdc",
      "tree": "5280ce34b130d7f7df761ef31d0c1a328f55717b",
      "parents": [
        "ba45dd6fbfe9f94baf3634a965bcfe6c2c41f4c8"
      ],
      "author": {
        "name": "Jason A. Donenfeld",
        "email": "Jason@zx2c4.com",
        "time": "Wed Jun 22 15:41:15 2022 +0200"
      },
      "committer": {
        "name": "Jason A. Donenfeld",
        "email": "Jason@zx2c4.com",
        "time": "Wed Jun 22 17:14:00 2022 +0200"
      },
      "message": "compat: handle backported rng and blake2s\n\nSigned-off-by: Jason A. Donenfeld \u003cJason@zx2c4.com\u003e\n"
    },
    {
      "commit": "ba45dd6fbfe9f94baf3634a965bcfe6c2c41f4c8",
      "tree": "4cabab254e36a3b66e3396f844367736a8cac4ac",
      "parents": [
        "c7560fd0e0b5aba307a9cd5e9eb7c998a059c8a4"
      ],
      "author": {
        "name": "Jason A. Donenfeld",
        "email": "Jason@zx2c4.com",
        "time": "Thu May 05 16:20:21 2022 +0200"
      },
      "committer": {
        "name": "Jason A. Donenfeld",
        "email": "Jason@zx2c4.com",
        "time": "Thu May 05 16:24:24 2022 +0200"
      },
      "message": "qemu: give up on RHEL8 in CI\n\nThey keep breaking their kernel and being difficult when I send patches\nto fix it, so just give up on trying to support this in the CI. It\u0027ll\nbitrot and people will complain and we\u0027ll see what happens at that\npoint.\n\nSigned-off-by: Jason A. Donenfeld \u003cJason@zx2c4.com\u003e\n"
    },
    {
      "commit": "c7560fd0e0b5aba307a9cd5e9eb7c998a059c8a4",
      "tree": "1d134aabd0bb3243610014717c6cd773c93031fa",
      "parents": [
        "33c87a11109996e13a13259e0c488e590c15f760"
      ],
      "author": {
        "name": "Jason A. Donenfeld",
        "email": "Jason@zx2c4.com",
        "time": "Thu May 05 16:16:40 2022 +0200"
      },
      "committer": {
        "name": "Jason A. Donenfeld",
        "email": "Jason@zx2c4.com",
        "time": "Thu May 05 16:24:24 2022 +0200"
      },
      "message": "qemu: set panic_on_warn\u003d1 from cmdline\n\nRather than setting this once init is running, set panic_on_warn from\nthe kernel command line, so that it catches splats from WireGuard\ninitialization code and the various crypto selftests.\n\nSigned-off-by: Jason A. Donenfeld \u003cJason@zx2c4.com\u003e\n"
    },
    {
      "commit": "33c87a11109996e13a13259e0c488e590c15f760",
      "tree": "dd0d91c7451403427b48d51c9c696781d51013bd",
      "parents": [
        "894152a5b89655863b012b707643f66a06e1c60a"
      ],
      "author": {
        "name": "Jason A. Donenfeld",
        "email": "Jason@zx2c4.com",
        "time": "Thu May 05 16:14:46 2022 +0200"
      },
      "committer": {
        "name": "Jason A. Donenfeld",
        "email": "Jason@zx2c4.com",
        "time": "Thu May 05 16:24:24 2022 +0200"
      },
      "message": "qemu: use vports on arm\n\nRather than having to hack up QEMU, just use the virtio serial device.\n\nSigned-off-by: Jason A. Donenfeld \u003cJason@zx2c4.com\u003e\n"
    },
    {
      "commit": "894152a5b89655863b012b707643f66a06e1c60a",
      "tree": "33ad9b650a904f5c796c317fc8354930096a4783",
      "parents": [
        "f8886735e303b0483e67dd4d4671cd271d427588"
      ],
      "author": {
        "name": "Jason A. Donenfeld",
        "email": "Jason@zx2c4.com",
        "time": "Sat Apr 30 22:20:28 2022 +0200"
      },
      "committer": {
        "name": "Jason A. Donenfeld",
        "email": "Jason@zx2c4.com",
        "time": "Thu May 05 16:08:26 2022 +0200"
      },
      "message": "netns: limit parallelism to $(nproc) tests at once\n\nThe parallel tests were added to catch queueing issues from multiple\ncores. But what happens in reality when testing tons of processes is\nthat these separate threads wind up fighting with the scheduler, and we\nwind up with contention in places we don\u0027t care about that decrease the\nchances of hitting a bug. So just do a test with the number of CPU\ncores, rather than trying to scale up arbitrarily.\n\nSigned-off-by: Jason A. Donenfeld \u003cJason@zx2c4.com\u003e\n"
    },
    {
      "commit": "f8886735e303b0483e67dd4d4671cd271d427588",
      "tree": "a39c1bf1d137706e344c945eaeb78a9648414961",
      "parents": [
        "f9d9b4db6fcdb06bd54d876255e66fee767bc87f"
      ],
      "author": {
        "name": "Jason A. Donenfeld",
        "email": "Jason@zx2c4.com",
        "time": "Wed Apr 27 03:21:51 2022 +0200"
      },
      "committer": {
        "name": "Jason A. Donenfeld",
        "email": "Jason@zx2c4.com",
        "time": "Thu May 05 16:07:27 2022 +0200"
      },
      "message": "netns: make routing loop test non-fatal\n\nI hate to do this, but I still do not have a good solution to actually\nfix this bug across architectures. So just disable it for now, so that\nthe CI can still deliver actionable results. This commit adds a large\nred warning, so that at least the failure isn\u0027t lost forever, and\nhopefully this can be revisited down the line.\n\nLink: https://lore.kernel.org/netdev/CAHmME9pv1x6C4TNdL6648HydD8r+txpV4hTUXOBVkrapBXH4QQ@mail.gmail.com/\nLink: https://lore.kernel.org/netdev/YmszSXueTxYOC41G@zx2c4.com/\nLink: https://lore.kernel.org/wireguard/CAHmME9rNnBiNvBstb7MPwK-7AmAN0sOfnhdR\u003deeLrowWcKxaaQ@mail.gmail.com/\nSigned-off-by: Jason A. Donenfeld \u003cJason@zx2c4.com\u003e\n"
    },
    {
      "commit": "f9d9b4db6fcdb06bd54d876255e66fee767bc87f",
      "tree": "8df3f5cc47e3493333b9150398a8f903d24c39c9",
      "parents": [
        "f909532a213dd82a43becfb79d33d66fe5ecc411"
      ],
      "author": {
        "name": "Nikolay Aleksandrov",
        "email": "razor@blackwall.org",
        "time": "Thu Apr 14 13:44:57 2022 +0300"
      },
      "committer": {
        "name": "Jason A. Donenfeld",
        "email": "Jason@zx2c4.com",
        "time": "Thu Apr 14 14:49:25 2022 +0200"
      },
      "message": "device: check for metadata_dst with skb_valid_dst()\n\nWhen we try to transmit an skb with md_dst attached through wireguard\nwe hit a null pointer dereference in wg_xmit() due to the use of\ndst_mtu() which calls into dst_blackhole_mtu() which in turn tries to\ndereference dst-\u003edev.\n\nSince wireguard doesn\u0027t use md_dsts we should use skb_valid_dst(), which\nchecks for DST_METADATA flag, and if it\u0027s set, then falls back to\nwireguard\u0027s device mtu. That gives us the best chance of transmitting\nthe packet; otherwise if the blackhole netdev is used we\u0027d get\nETH_MIN_MTU.\n\n [  263.693506] BUG: kernel NULL pointer dereference, address: 00000000000000e0\n [  263.693908] #PF: supervisor read access in kernel mode\n [  263.694174] #PF: error_code(0x0000) - not-present page\n [  263.694424] PGD 0 P4D 0\n [  263.694653] Oops: 0000 [#1] PREEMPT SMP NOPTI\n [  263.694876] CPU: 5 PID: 951 Comm: mausezahn Kdump: loaded Not tainted 5.18.0-rc1+ #522\n [  263.695190] Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.15.0-1.fc35 04/01/2014\n [  263.695529] RIP: 0010:dst_blackhole_mtu+0x17/0x20\n [  263.695770] Code: 00 00 00 0f 1f 44 00 00 c3 66 2e 0f 1f 84 00 00 00 00 00 0f 1f 44 00 00 48 8b 47 10 48 83 e0 fc 8b 40 04 85 c0 75 09 48 8b 07 \u003c8b\u003e 80 e0 00 00 00 c3 66 90 0f 1f 44 00 00 48 89 d7 be 01 00 00 00\n [  263.696339] RSP: 0018:ffffa4a4422fbb28 EFLAGS: 00010246\n [  263.696600] RAX: 0000000000000000 RBX: ffff8ac9c3553000 RCX: 0000000000000000\n [  263.696891] RDX: 0000000000000401 RSI: 00000000fffffe01 RDI: ffffc4a43fb48900\n [  263.697178] RBP: ffffa4a4422fbb90 R08: ffffffff9622635e R09: 0000000000000002\n [  263.697469] R10: ffffffff9b69a6c0 R11: ffffa4a4422fbd0c R12: ffff8ac9d18b1a00\n [  263.697766] R13: ffff8ac9d0ce1840 R14: ffff8ac9d18b1a00 R15: ffff8ac9c3553000\n [  263.698054] FS:  00007f3704c337c0(0000) GS:ffff8acaebf40000(0000) knlGS:0000000000000000\n [  263.698470] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033\n [  263.698826] CR2: 00000000000000e0 CR3: 0000000117a5c000 CR4: 00000000000006e0\n [  263.699214] Call Trace:\n [  263.699505]  \u003cTASK\u003e\n [  263.699759]  wg_xmit+0x411/0x450\n [  263.700059]  ? bpf_skb_set_tunnel_key+0x46/0x2d0\n [   263.700382]  ? dev_queue_xmit_nit+0x31/0x2b0\n [  263.700719]  dev_hard_start_xmit+0xd9/0x220\n [  263.701047]  __dev_queue_xmit+0x8b9/0xd30\n [  263.701344]  __bpf_redirect+0x1a4/0x380\n [  263.701664]  __dev_queue_xmit+0x83b/0xd30\n [  263.701961]  ? packet_parse_headers+0xb4/0xf0\n [  263.702275]  packet_sendmsg+0x9a8/0x16a0\n [  263.702596]  ? _raw_spin_unlock_irqrestore+0x23/0x40\n [  263.702933]  sock_sendmsg+0x5e/0x60\n [  263.703239]  __sys_sendto+0xf0/0x160\n [  263.703549]  __x64_sys_sendto+0x20/0x30\n [  263.703853]  do_syscall_64+0x3b/0x90\n [  263.704162]  entry_SYSCALL_64_after_hwframe+0x44/0xae\n [  263.704494] RIP: 0033:0x7f3704d50506\n [  263.704789] Code: 48 c7 c0 ff ff ff ff eb b7 66 2e 0f 1f 84 00 00 00 00 00 90 41 89 ca 64 8b 04 25 18 00 00 00 85 c0 75 11 b8 2c 00 00 00 0f 05 \u003c48\u003e 3d 00 f0 ff ff 77 72 c3 90 55 48 83 ec 30 44 89 4c 24 2c 4c 89\n [  263.705652] RSP: 002b:00007ffe954b0b88 EFLAGS: 00000246 ORIG_RAX: 000000000000002c\n [  263.706141] RAX: ffffffffffffffda RBX: 0000558bb259b490 RCX: 00007f3704d50506\n [  263.706544] RDX: 000000000000004a RSI: 0000558bb259b7b2 RDI: 0000000000000003\n [  263.706952] RBP: 0000000000000000 R08: 00007ffe954b0b90 R09: 0000000000000014\n [  263.707339] R10: 0000000000000000 R11: 0000000000000246 R12: 00007ffe954b0b90\n [  263.707735] R13: 000000000000004a R14: 0000558bb259b7b2 R15: 0000000000000001\n [  263.708132]  \u003c/TASK\u003e\n [  263.708398] Modules linked in: bridge netconsole bonding [last unloaded: bridge]\n [  263.708942] CR2: 00000000000000e0\n\nLink: https://github.com/cilium/cilium/issues/19428\nReported-by: Martynas Pumputis \u003cm@lambda.lt\u003e\nSigned-off-by: Nikolay Aleksandrov \u003crazor@blackwall.org\u003e\nAcked-by: Daniel Borkmann \u003cdaniel@iogearbox.net\u003e\n[Jason: polyfilled for \u003c 4.3]\nSigned-off-by: Jason A. Donenfeld \u003cJason@zx2c4.com\u003e\n"
    },
    {
      "commit": "f909532a213dd82a43becfb79d33d66fe5ecc411",
      "tree": "4b7dbde98c6e7c9354ffe5648df2270a5c3042e3",
      "parents": [
        "ec89ca64cb162f278d397e7b774d460a15d5f2ea"
      ],
      "author": {
        "name": "Jason A. Donenfeld",
        "email": "Jason@zx2c4.com",
        "time": "Wed Apr 06 18:01:04 2022 +0200"
      },
      "committer": {
        "name": "Jason A. Donenfeld",
        "email": "Jason@zx2c4.com",
        "time": "Wed Apr 06 18:01:04 2022 +0200"
      },
      "message": "qemu: enable ACPI for SMP\n\nIt turns out that by having CONFIG_ACPI\u003dn, we\u0027ve been failing to boot\nadditional CPUs, and so these systems were functionally UP. The code\nbloat is unfortunate for build times, but I don\u0027t see an alternative. So\nthis commit sets CONFIG_ACPI\u003dy for x86_64 and i686 configs.\n\nSigned-off-by: Jason A. Donenfeld \u003cJason@zx2c4.com\u003e\n"
    },
    {
      "commit": "ec89ca64cb162f278d397e7b774d460a15d5f2ea",
      "tree": "ee18b2185fc11423fe0c3a6ddfe4fbb06bc88ee3",
      "parents": [
        "fa32671b99404c53946deb45a3c3062c353a706c"
      ],
      "author": {
        "name": "Jason A. Donenfeld",
        "email": "Jason@zx2c4.com",
        "time": "Tue Mar 29 21:31:27 2022 -0400"
      },
      "committer": {
        "name": "Jason A. Donenfeld",
        "email": "Jason@zx2c4.com",
        "time": "Wed Apr 06 18:00:26 2022 +0200"
      },
      "message": "socket: ignore v6 endpoints when ipv6 is disabled\n\nThe previous commit fixed a memory leak on the send path in the event\nthat IPv6 is disabled at compile time, but how did a packet even arrive\nthere to begin with? It turns out we have previously allowed IPv6\nendpoints even when IPv6 support is disabled at compile time. This is\nawkward and inconsistent. Instead, let\u0027s just ignore all things IPv6,\nthe same way we do other malformed endpoints, in the case where IPv6 is\ndisabled.\n\nSigned-off-by: Jason A. Donenfeld \u003cJason@zx2c4.com\u003e\n"
    },
    {
      "commit": "fa32671b99404c53946deb45a3c3062c353a706c",
      "tree": "066da0971984d3a0e7dc83057d435ca0535aa18b",
      "parents": [
        "ffb8cd62334ebc1880108f552bc07b9ac0a2ed33"
      ],
      "author": {
        "name": "Wang Hai",
        "email": "wanghai38@huawei.com",
        "time": "Tue Mar 29 21:31:26 2022 -0400"
      },
      "committer": {
        "name": "Jason A. Donenfeld",
        "email": "Jason@zx2c4.com",
        "time": "Wed Apr 06 17:59:56 2022 +0200"
      },
      "message": "socket: free skb in send6 when ipv6 is disabled\n\nI got a memory leak report:\n\nunreferenced object 0xffff8881191fc040 (size 232):\n  comm \"kworker/u17:0\", pid 23193, jiffies 4295238848 (age 3464.870s)\n  hex dump (first 32 bytes):\n    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................\n    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................\n  backtrace:\n    [\u003cffffffff814c3ef4\u003e] slab_post_alloc_hook+0x84/0x3b0\n    [\u003cffffffff814c8977\u003e] kmem_cache_alloc_node+0x167/0x340\n    [\u003cffffffff832974fb\u003e] __alloc_skb+0x1db/0x200\n    [\u003cffffffff82612b5d\u003e] wg_socket_send_buffer_to_peer+0x3d/0xc0\n    [\u003cffffffff8260e94a\u003e] wg_packet_send_handshake_initiation+0xfa/0x110\n    [\u003cffffffff8260ec81\u003e] wg_packet_handshake_send_worker+0x21/0x30\n    [\u003cffffffff8119c558\u003e] process_one_work+0x2e8/0x770\n    [\u003cffffffff8119ca2a\u003e] worker_thread+0x4a/0x4b0\n    [\u003cffffffff811a88e0\u003e] kthread+0x120/0x160\n    [\u003cffffffff8100242f\u003e] ret_from_fork+0x1f/0x30\n\nIn function wg_socket_send_buffer_as_reply_to_skb() or wg_socket_send_\nbuffer_to_peer(), the semantics of send6() is required to free skb. But\nwhen CONFIG_IPV6 is disable, kfree_skb() is missing. This patch adds it\nto fix this bug.\n\nSigned-off-by: Wang Hai \u003cwanghai38@huawei.com\u003e\nSigned-off-by: Jason A. Donenfeld \u003cJason@zx2c4.com\u003e\n"
    },
    {
      "commit": "ffb8cd62334ebc1880108f552bc07b9ac0a2ed33",
      "tree": "a3dcb820fded1a2a0ff98969d24edde2b6606b5f",
      "parents": [
        "4eff63d292f714a67834bfbd7cbc4c0fa0b1dd52"
      ],
      "author": {
        "name": "Jason A. Donenfeld",
        "email": "Jason@zx2c4.com",
        "time": "Tue Feb 22 16:04:10 2022 +0100"
      },
      "committer": {
        "name": "Jason A. Donenfeld",
        "email": "Jason@zx2c4.com",
        "time": "Thu Mar 03 00:10:28 2022 +0100"
      },
      "message": "qemu: simplify RNG seeding\n\nWe don\u0027t actualy need to write anything in the pool. Instead, we just\nforce the total over 128, and we should be good to go for all old\nkernels. We also only need this on getrandom() kernels, which simplifies\nthings too.\n\nSigned-off-by: Jason A. Donenfeld \u003cJason@zx2c4.com\u003e\n"
    },
    {
      "commit": "4eff63d292f714a67834bfbd7cbc4c0fa0b1dd52",
      "tree": "9cc99808a98466f0e428c764dd13285b39a8d631",
      "parents": [
        "273018b7eaccf2f8d146c00f21db7dbd9678bd43"
      ],
      "author": {
        "name": "Jason A. Donenfeld",
        "email": "Jason@zx2c4.com",
        "time": "Wed Mar 02 23:48:40 2022 +0100"
      },
      "committer": {
        "name": "Jason A. Donenfeld",
        "email": "Jason@zx2c4.com",
        "time": "Wed Mar 02 23:49:51 2022 +0100"
      },
      "message": "queueing: use CFI-safe ptr_ring cleanup function\n\nWe make too nuanced use of ptr_ring to entirely move to the skb_array\nwrappers, but we at least should avoid the naughty function pointer cast\nwhen cleaning up skbs. Otherwise RAP/CFI will honk at us. This patch\nuses the __skb_array_destroy_skb wrapper for the cleanup, rather than\ndirectly providing kfree_skb, which is what other drivers in the same\nsituation do too.\n\nReported-by: PaX Team \u003cpageexec@freemail.hu\u003e\nSigned-off-by: Jason A. Donenfeld \u003cJason@zx2c4.com\u003e\n"
    },
    {
      "commit": "273018b7eaccf2f8d146c00f21db7dbd9678bd43",
      "tree": "d6be93cda1d709b8435cb73ef7ff8b774cea1ec6",
      "parents": [
        "4f4c019873d657e0dcc1d8b26fc1bd455c32142a"
      ],
      "author": {
        "name": "Jason A. Donenfeld",
        "email": "Jason@zx2c4.com",
        "time": "Mon Dec 13 17:25:37 2021 +0100"
      },
      "committer": {
        "name": "Jason A. Donenfeld",
        "email": "Jason@zx2c4.com",
        "time": "Mon Dec 13 17:25:37 2021 +0100"
      },
      "message": "crypto: curve25519-x86_64: use in/out register constraints more precisely\n\nRather than passing all variables as modified, pass ones that are only\nread into that parameter. This helps with old gcc versions when\nalternatives are additionally used, and lets gcc\u0027s codegen be a little\nbit more efficient. This also syncs up with the latest Vale/EverCrypt\noutput.\n\nThis also forward ports 3c9f3b6 (\"crypto: curve25519-x86_64: solve\nregister constraints with reserved registers\").\n\nCc: Aymeric Fromherz \u003caymeric.fromherz@inria.fr\u003e\nCc: Mathias Krause \u003cminipli@grsecurity.net\u003e\nLink: https://lore.kernel.org/wireguard/1554725710.1290070.1639240504281.JavaMail.zimbra@inria.fr/\nLink: https://github.com/project-everest/hacl-star/pull/501\nSigned-off-by: Jason A. Donenfeld \u003cJason@zx2c4.com\u003e\n"
    },
    {
      "commit": "4f4c019873d657e0dcc1d8b26fc1bd455c32142a",
      "tree": "5d5391e3a51294b951b67404b63af832c47cfbf4",
      "parents": [
        "743eef2350294de37411d2492d03edf0d913af31"
      ],
      "author": {
        "name": "Jason A. Donenfeld",
        "email": "Jason@zx2c4.com",
        "time": "Mon Dec 13 15:06:45 2021 +0100"
      },
      "committer": {
        "name": "Jason A. Donenfeld",
        "email": "Jason@zx2c4.com",
        "time": "Mon Dec 13 15:06:45 2021 +0100"
      },
      "message": "compat: drop Ubuntu 14.04\n\nIt\u0027s been over a year since we announced sunsetting this.\n\nLink: https://lore.kernel.org/wireguard/CAHmME9rckipsdZYW+LA\u003dx6wCMybdFFA+VqoogFXnR\u003dkHYiCteg@mail.gmail.com/T\nSigned-off-by: Jason A. Donenfeld \u003cJason@zx2c4.com\u003e\n"
    },
    {
      "commit": "743eef2350294de37411d2492d03edf0d913af31",
      "tree": "8a429d7a04a718e35f58e9146fc31ef4f69228f4",
      "parents": [
        "3c9f3b6997fe8cbb5e7b80ea5d622b5d0e827003"
      ],
      "author": {
        "name": "Jason A. Donenfeld",
        "email": "Jason@zx2c4.com",
        "time": "Wed Dec 08 16:09:03 2021 +0100"
      },
      "committer": {
        "name": "Jason A. Donenfeld",
        "email": "Jason@zx2c4.com",
        "time": "Wed Dec 08 16:09:03 2021 +0100"
      },
      "message": "version: bump\n\nSigned-off-by: Jason A. Donenfeld \u003cJason@zx2c4.com\u003e\n"
    },
    {
      "commit": "3c9f3b6997fe8cbb5e7b80ea5d622b5d0e827003",
      "tree": "947e37aebe7e8f77b3dd64e43e30a48a5a6348ec",
      "parents": [
        "8e40dd627085ca9cf1e7ab1725709f26ab0a5b73"
      ],
      "author": {
        "name": "Mathias Krause",
        "email": "minipli@grsecurity.net",
        "time": "Tue Jul 06 15:27:14 2021 +0200"
      },
      "committer": {
        "name": "Jason A. Donenfeld",
        "email": "Jason@zx2c4.com",
        "time": "Mon Dec 06 22:47:01 2021 +0100"
      },
      "message": "crypto: curve25519-x86_64: solve register constraints with reserved registers\n\nThe register constraints for the inline assembly in fsqr() and fsqr2()\nare pretty tight on what the compiler may assign to the remaining three\nregister variables. The clobber list only allows the following to be\nused: RDI, RSI, RBP and R12. With RAP reserving R12 and a kernel having\nCONFIG_FRAME_POINTER\u003dy, claiming RBP, there are only two registers left\nso the compiler rightfully complains about impossible constraints.\n\nProvide alternatives that\u0027ll allow a memory reference for \u0027out\u0027 to solve\nthe allocation constraint dilemma for this configuration.\n\nAlso make \u0027out\u0027 an input-only operand as it is only used as such. This\nnot only allows gcc to optimize its usage further, but also works around\nolder gcc versions, apparently failing to handle multiple alternatives\ncorrectly, as in failing to initialize the \u0027out\u0027 operand with its input\nvalue.\n\nSigned-off-by: Mathias Krause \u003cminipli@grsecurity.net\u003e\nSigned-off-by: Jason A. Donenfeld \u003cJason@zx2c4.com\u003e\n"
    },
    {
      "commit": "8e40dd627085ca9cf1e7ab1725709f26ab0a5b73",
      "tree": "72f6f3ac1eece78417e05d527b2a5ac82b7b816b",
      "parents": [
        "ea6b8e7be5072553b37df4b0b8ee6e0a37134738"
      ],
      "author": {
        "name": "Jason A. Donenfeld",
        "email": "Jason@zx2c4.com",
        "time": "Mon Dec 06 18:31:49 2021 +0100"
      },
      "committer": {
        "name": "Jason A. Donenfeld",
        "email": "Jason@zx2c4.com",
        "time": "Mon Dec 06 18:34:54 2021 +0100"
      },
      "message": "compat: udp_tunnel: don\u0027t take reference to non-init namespace\n\nThe comment to sk_change_net is instructive:\n\n  Kernel sockets, f.e. rtnl or icmp_socket, are a part of a namespace.\n  They should not hold a reference to a namespace in order to allow\n  to stop it.\n  Sockets after sk_change_net should be released using sk_release_kernel\n\nWe weren\u0027t following these rules before, and were instead using\n__sock_create, which means we kept a reference to the namespace, which\nin turn meant that interfaces were not cleaned up on namespace\nexit.\n\nSigned-off-by: Jason A. Donenfeld \u003cJason@zx2c4.com\u003e\n"
    },
    {
      "commit": "ea6b8e7be5072553b37df4b0b8ee6e0a37134738",
      "tree": "a7db27438dbd48daa11a974f321b1d593f87a4e9",
      "parents": [
        "5325bc82aa7b6d60fbda2ad4f64b1c676cea01fe"
      ],
      "author": {
        "name": "Arnd Bergmann",
        "email": "arnd@arndb.de",
        "time": "Mon Nov 29 13:58:57 2021 -0500"
      },
      "committer": {
        "name": "Jason A. Donenfeld",
        "email": "Jason@zx2c4.com",
        "time": "Fri Dec 03 23:24:03 2021 +0100"
      },
      "message": "compat: siphash: use _unaligned version by default\n\nOn ARM v6 and later, we define CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS\nbecause the ordinary load/store instructions (ldr, ldrh, ldrb) can\ntolerate any misalignment of the memory address. However, load/store\ndouble and load/store multiple instructions (ldrd, ldm) may still only\nbe used on memory addresses that are 32-bit aligned, and so we have to\nuse the CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS macro with care, or we\nmay end up with a severe performance hit due to alignment traps that\nrequire fixups by the kernel. Testing shows that this currently happens\nwith clang-13 but not gcc-11. In theory, any compiler version can\nproduce this bug or other problems, as we are dealing with undefined\nbehavior in C99 even on architectures that support this in hardware,\nsee also https://gcc.gnu.org/bugzilla/show_bug.cgi?id\u003d100363.\n\nFortunately, the get_unaligned() accessors do the right thing: when\nbuilding for ARMv6 or later, the compiler will emit unaligned accesses\nusing the ordinary load/store instructions (but avoid the ones that\nrequire 32-bit alignment). When building for older ARM, those accessors\nwill emit the appropriate sequence of ldrb/mov/orr instructions. And on\narchitectures that can truly tolerate any kind of misalignment, the\nget_unaligned() accessors resolve to the leXX_to_cpup accessors that\noperate on aligned addresses.\n\nSince the compiler will in fact emit ldrd or ldm instructions when\nbuilding this code for ARM v6 or later, the solution is to use the\nunaligned accessors unconditionally on architectures where this is\nknown to be fast. The _aligned version of the hash function is\nhowever still needed to get the best performance on architectures\nthat cannot do any unaligned access in hardware.\n\nThis new version avoids the undefined behavior and should produce\nthe fastest hash on all architectures we support.\n\nReported-by: Ard Biesheuvel \u003card.biesheuvel@linaro.org\u003e\nSigned-off-by: Arnd Bergmann \u003carnd@arndb.de\u003e\nReviewed-by: Jason A. Donenfeld \u003cJason@zx2c4.com\u003e\nAcked-by: Ard Biesheuvel \u003cardb@kernel.org\u003e\nSigned-off-by: Jason A. Donenfeld \u003cJason@zx2c4.com\u003e\n"
    },
    {
      "commit": "5325bc82aa7b6d60fbda2ad4f64b1c676cea01fe",
      "tree": "fa1dc491b5a3d86e123ab1401518f88ec2831bc3",
      "parents": [
        "e44c78cb66b78c24c2e54b862665db15fca41289"
      ],
      "author": {
        "name": "Gustavo A. R. Silva",
        "email": "gustavoars@kernel.org",
        "time": "Tue Sep 28 17:17:05 2021 -0500"
      },
      "committer": {
        "name": "Jason A. Donenfeld",
        "email": "Jason@zx2c4.com",
        "time": "Fri Dec 03 23:24:03 2021 +0100"
      },
      "message": "ratelimiter: use kvcalloc() instead of kvzalloc()\n\nUse 2-factor argument form kvcalloc() instead of kvzalloc().\n\nSigned-off-by: Gustavo A. R. Silva \u003cgustavoars@kernel.org\u003e\nSigned-off-by: Jason A. Donenfeld \u003cJason@zx2c4.com\u003e\n"
    },
    {
      "commit": "e44c78cb66b78c24c2e54b862665db15fca41289",
      "tree": "167a772bbd986ec783180b9293e713dd02b594ec",
      "parents": [
        "5707d38fb56d6021b3bc3ce77d2286f2204afe01"
      ],
      "author": {
        "name": "Jason A. Donenfeld",
        "email": "Jason@zx2c4.com",
        "time": "Fri Aug 13 03:00:08 2021 +0200"
      },
      "committer": {
        "name": "Jason A. Donenfeld",
        "email": "Jason@zx2c4.com",
        "time": "Fri Dec 03 23:24:03 2021 +0100"
      },
      "message": "receive: drop handshakes if queue lock is contended\n\nIf we\u0027re being delivered packets from multiple CPUs so quickly that the\nring lock is contended for CPU tries, then it\u0027s safe to assume that the\nqueue is near capacity anyway, so just drop the packet rather than\nspinning. This helps deal with multicore DoS that can interfere with\ndata path performance. It _still_ does not completely fix the issue, but\nit again chips away at it.\n\nReported-by: Streun Fabio \u003cfstreun@student.ethz.ch\u003e\nSigned-off-by: Jason A. Donenfeld \u003cJason@zx2c4.com\u003e\n"
    },
    {
      "commit": "5707d38fb56d6021b3bc3ce77d2286f2204afe01",
      "tree": "e39558d3f1e37f0488a8dcf9dbfc99534ffeaab8",
      "parents": [
        "68abb1b9ba6c9726ea108f796ae7d84f8553d620"
      ],
      "author": {
        "name": "Jason A. Donenfeld",
        "email": "Jason@zx2c4.com",
        "time": "Sun Aug 08 23:56:14 2021 +0200"
      },
      "committer": {
        "name": "Jason A. Donenfeld",
        "email": "Jason@zx2c4.com",
        "time": "Fri Dec 03 23:24:03 2021 +0100"
      },
      "message": "receive: use ring buffer for incoming handshakes\n\nApparently the spinlock on incoming_handshake\u0027s skb_queue is highly\ncontended, and a torrent of handshake or cookie packets can bring the\ndata plane to its knees, simply by virtue of enqueueing the handshake\npackets to be processed asynchronously. So, we try switching this to a\nring buffer to hopefully have less lock contention. This alleviates the\nproblem somewhat, though it still isn\u0027t perfect, so future patches will\nhave to improve this further. However, it at least doesn\u0027t completely\ndiminish the data plane.\n\nReported-by: Streun Fabio \u003cfstreun@student.ethz.ch\u003e\nReported-by: Joel Wanner \u003cjoel.wanner@inf.ethz.ch\u003e\nSigned-off-by: Jason A. Donenfeld \u003cJason@zx2c4.com\u003e\n"
    },
    {
      "commit": "68abb1b9ba6c9726ea108f796ae7d84f8553d620",
      "tree": "eb3eb842a79c65b60f77f43f606a0b06161288d3",
      "parents": [
        "ea3f5fbe7ef2e00527b77f459a3e5e1fb6b71089"
      ],
      "author": {
        "name": "Jason A. Donenfeld",
        "email": "Jason@zx2c4.com",
        "time": "Mon Nov 29 13:52:14 2021 -0500"
      },
      "committer": {
        "name": "Jason A. Donenfeld",
        "email": "Jason@zx2c4.com",
        "time": "Fri Dec 03 23:24:03 2021 +0100"
      },
      "message": "device: reset peer src endpoint when netns exits\n\nEach peer\u0027s endpoint contains a dst_cache entry that takes a reference\nto another netdev. When the containing namespace exits, we take down the\nsocket and prevent future sockets from being created (by setting\ncreating_net to NULL), which removes that potential reference on the\nnetns. However, it doesn\u0027t release references to the netns that a netdev\ncached in dst_cache might be taking, so the netns still might fail to\nexit. Since the socket is gimped anyway, we can simply clear all the\ndst_caches (by way of clearing the endpoint src), which will release all\nreferences.\n\nHowever, the current dst_cache_reset function only releases those\nreferences lazily. But it turns out that all of our usages of\nwg_socket_clear_peer_endpoint_src are called from contexts that are not\nexactly high-speed or bottle-necked. For example, when there\u0027s\nconnection difficulty, or when userspace is reconfiguring the interface.\nAnd in particular for this patch, when the netns is exiting. So for\nthose cases, it makes more sense to call dst_release immediately. For\nthat, we add a small helper function to dst_cache.\n\nThis patch also adds a test to netns.sh from Hangbin Liu to ensure this\ndoesn\u0027t regress.\n\nTest-by: Hangbin Liu \u003cliuhangbin@gmail.com\u003e\nReported-by: Xiumei Mu \u003cxmu@redhat.com\u003e\nSigned-off-by: Jason A. Donenfeld \u003cJason@zx2c4.com\u003e\n"
    },
    {
      "commit": "ea3f5fbe7ef2e00527b77f459a3e5e1fb6b71089",
      "tree": "11b618cb1768412488f01718259da19837bb9ca3",
      "parents": [
        "cb001d454024a01256fc269c64e364752a0e7c60"
      ],
      "author": {
        "name": "Randy Dunlap",
        "email": "rdunlap@infradead.org",
        "time": "Sun Jul 11 15:31:48 2021 -0700"
      },
      "committer": {
        "name": "Jason A. Donenfeld",
        "email": "Jason@zx2c4.com",
        "time": "Fri Dec 03 23:24:03 2021 +0100"
      },
      "message": "main: rename \u0027mod_init\u0027 \u0026 \u0027mod_exit\u0027 functions to be module-specific\n\nRename module_init \u0026 module_exit functions that are named\n\"mod_init\" and \"mod_exit\" so that they are unique in both the\nSystem.map file and in initcall_debug output instead of showing\nup as almost anonymous \"mod_init\".\n\nThis is helpful for debugging and in determining how long certain\nmodule_init calls take to execute.\n\nSigned-off-by: Randy Dunlap \u003crdunlap@infradead.org\u003e\nSigned-off-by: Jason A. Donenfeld \u003cJason@zx2c4.com\u003e\n"
    },
    {
      "commit": "cb001d454024a01256fc269c64e364752a0e7c60",
      "tree": "458053f8dc6c613e69a07764e4036d53e5c3c3ec",
      "parents": [
        "2715e64143021a3f9635e3d470a5a975cf13f8f6"
      ],
      "author": {
        "name": "Jason A. Donenfeld",
        "email": "Jason@zx2c4.com",
        "time": "Mon Nov 29 13:43:07 2021 -0500"
      },
      "committer": {
        "name": "Jason A. Donenfeld",
        "email": "Jason@zx2c4.com",
        "time": "Fri Dec 03 23:24:03 2021 +0100"
      },
      "message": "netns: actually test for routing loops\n\nWe previously removed the restriction on looping to self, and then added\na test to make sure the kernel didn\u0027t blow up during a routing loop. The\nkernel didn\u0027t blow up, thankfully, but on certain architectures where\nskb fragmentation is easier, such as ppc64, the skbs weren\u0027t actually\nbeing discarded after a few rounds through. But the test wasn\u0027t catching\nthis. So actually test explicitly for massive increases in tx to see if\nwe have a routing loop. Note that the actual loop problem will need to\nbe addressed in a different commit.\n\nSigned-off-by: Jason A. Donenfeld \u003cJason@zx2c4.com\u003e\n"
    },
    {
      "commit": "2715e64143021a3f9635e3d470a5a975cf13f8f6",
      "tree": "3f35d411b152b7bb8906b6c36eb6f8f23a38ef78",
      "parents": [
        "29747255f9672035ccf9cc310b7ff66b1f35f1d2"
      ],
      "author": {
        "name": "Peter Georg",
        "email": "peter.georg@physik.uni-regensburg.de",
        "time": "Tue Nov 16 17:52:22 2021 +0100"
      },
      "committer": {
        "name": "Jason A. Donenfeld",
        "email": "Jason@zx2c4.com",
        "time": "Fri Dec 03 23:24:03 2021 +0100"
      },
      "message": "compat: update for RHEL 8.5\n\nRHEL 8.5 has been released. Replace all ISCENTOS8S checks with ISRHEL8.\nIncrease RHEL_MINOR for CentOS 8 Stream detection to 6.\n\nSigned-off-by: Peter Georg \u003cpeter.georg@physik.uni-regensburg.de\u003e\nSigned-off-by: Jason A. Donenfeld \u003cJason@zx2c4.com\u003e\n"
    },
    {
      "commit": "29747255f9672035ccf9cc310b7ff66b1f35f1d2",
      "tree": "65d7b46b89a01647111a116b343629ebea4ef336",
      "parents": [
        "50dda8ce5ee691b97ae640aba4cbe55aa9b62085"
      ],
      "author": {
        "name": "Mathias Krause",
        "email": "minipli@grsecurity.net",
        "time": "Tue Jul 06 15:27:13 2021 +0200"
      },
      "committer": {
        "name": "Jason A. Donenfeld",
        "email": "Jason@zx2c4.com",
        "time": "Sun Aug 08 22:28:36 2021 +0200"
      },
      "message": "compat: account for grsecurity backports and changes\n\ngrsecurity kernels tend to carry additional backports and changes, like\ncommit b60b87fc2996 (\"netlink: add ethernet address policy types\") or\nthe SYM_FUNC_* changes. RAP nowadays hooks the latter, therefore no\ndiversion to RAP_ENTRY is needed any more.\n\nInstead of relying on the kernel version test, also test for the macros\nwe\u0027re about to define to not already be defined to account for these\nadditional changes in the grsecurity patch without breaking\ncompatibility to the older public ones.\n\nAlso test for CONFIG_PAX instead of RAP_PLUGIN for the timer API related\nchanges as these don\u0027t depend on the RAP plugin to be enabled but just a\nPaX/grsecurity patch to be applied. While there is no preprocessor knob\nfor the latter, use CONFIG_PAX as this will likely be enabled in every\nkernel that uses the patch.\n\nSigned-off-by: Mathias Krause \u003cminipli@grsecurity.net\u003e\n[zx2c4: small changes to include a header nearby a macro def test]\nSigned-off-by: Jason A. Donenfeld \u003cJason@zx2c4.com\u003e\n"
    },
    {
      "commit": "50dda8ce5ee691b97ae640aba4cbe55aa9b62085",
      "tree": "7124f0f78a054fccfc21f4ba505d7993b92fe1fb",
      "parents": [
        "d378f9307850a3824107c44add3bcf23d64bfcf5"
      ],
      "author": {
        "name": "Jason A. Donenfeld",
        "email": "Jason@zx2c4.com",
        "time": "Tue Jun 15 01:13:41 2021 +0200"
      },
      "committer": {
        "name": "Jason A. Donenfeld",
        "email": "Jason@zx2c4.com",
        "time": "Tue Jun 15 01:13:41 2021 +0200"
      },
      "message": "compat: account for latest c8s backports\n\nSigned-off-by: Jason A. Donenfeld \u003cJason@zx2c4.com\u003e\n"
    },
    {
      "commit": "d378f9307850a3824107c44add3bcf23d64bfcf5",
      "tree": "66b971672d0292d09696adf1204ed87db3d130dc",
      "parents": [
        "fb4a0da653522a9b4db853aafaea32979e5e2e1c"
      ],
      "author": {
        "name": "Jason A. Donenfeld",
        "email": "Jason@zx2c4.com",
        "time": "Sun Jun 06 11:29:55 2021 +0200"
      },
      "committer": {
        "name": "Jason A. Donenfeld",
        "email": "Jason@zx2c4.com",
        "time": "Sun Jun 06 11:29:55 2021 +0200"
      },
      "message": "version: bump\n\nSigned-off-by: Jason A. Donenfeld \u003cJason@zx2c4.com\u003e\n"
    },
    {
      "commit": "fb4a0da653522a9b4db853aafaea32979e5e2e1c",
      "tree": "c525752728840b019c21026fc43a9ae54bbc280c",
      "parents": [
        "8f4414d334564bd65b542335237574745ed1e11b"
      ],
      "author": {
        "name": "Jason A. Donenfeld",
        "email": "Jason@zx2c4.com",
        "time": "Sun Jun 06 10:38:33 2021 +0200"
      },
      "committer": {
        "name": "Jason A. Donenfeld",
        "email": "Jason@zx2c4.com",
        "time": "Sun Jun 06 10:38:33 2021 +0200"
      },
      "message": "qemu: increase default dmesg log size\n\nThe selftests currently parse the kernel log at the end to track\npotential memory leaks. With these tests now reading off the end of the\nbuffer, due to recent optimizations, some creation messages were lost,\nmaking the tests think that there was a free without an alloc. Fix this\nby increasing the kernel log size.\n\nSigned-off-by: Jason A. Donenfeld \u003cJason@zx2c4.com\u003e\n"
    },
    {
      "commit": "8f4414d334564bd65b542335237574745ed1e11b",
      "tree": "122dcab422e399a525a9494b080c25ea3e2f7744",
      "parents": [
        "fd7a4621a598c63708285a8c36c5b0835173f896"
      ],
      "author": {
        "name": "Jason A. Donenfeld",
        "email": "Jason@zx2c4.com",
        "time": "Sat Jun 05 23:52:49 2021 +0200"
      },
      "committer": {
        "name": "Jason A. Donenfeld",
        "email": "Jason@zx2c4.com",
        "time": "Sun Jun 06 00:12:57 2021 +0200"
      },
      "message": "qemu: add disgusting hacks for RHEL 8\n\nRed Hat does awful things to their kernel for RHEL 8, such that it\ndoesn\u0027t even compile in most configurations. This is utter craziness,\nand their response to me sending patches to fix this stuff has been to\nstonewall for months on end and then do nothing.\n\nSigned-off-by: Jason A. Donenfeld \u003cJason@zx2c4.com\u003e\n"
    },
    {
      "commit": "fd7a4621a598c63708285a8c36c5b0835173f896",
      "tree": "d89d0032cbeae32eb425fd17d77bb543f952889d",
      "parents": [
        "383461dba89e31631a972dd4d090bc4cc650088f"
      ],
      "author": {
        "name": "Jason A. Donenfeld",
        "email": "Jason@zx2c4.com",
        "time": "Fri Jun 04 17:24:57 2021 +0200"
      },
      "committer": {
        "name": "Jason A. Donenfeld",
        "email": "Jason@zx2c4.com",
        "time": "Fri Jun 04 17:49:34 2021 +0200"
      },
      "message": "allowedips: add missing __rcu annotation to satisfy sparse\n\nA __rcu annotation got lost during refactoring, which caused sparse to\nbecome enraged.\n\nSigned-off-by: Jason A. Donenfeld \u003cJason@zx2c4.com\u003e\n"
    },
    {
      "commit": "383461dba89e31631a972dd4d090bc4cc650088f",
      "tree": "663f599dfe6343ac5d1bbf3ebab4f7574475c9c5",
      "parents": [
        "03add828b72f2153a5fe7a507b3bc634ca2818fb"
      ],
      "author": {
        "name": "Jason A. Donenfeld",
        "email": "Jason@zx2c4.com",
        "time": "Wed Jun 02 15:40:55 2021 +0200"
      },
      "committer": {
        "name": "Jason A. Donenfeld",
        "email": "Jason@zx2c4.com",
        "time": "Fri Jun 04 16:57:59 2021 +0200"
      },
      "message": "allowedips: free empty intermediate nodes when removing single node\n\nWhen removing single nodes, it\u0027s possible that that node\u0027s parent is an\nempty intermediate node, in which case, it too should be removed.\nOtherwise the trie fills up and never is fully emptied, leading to\ngradual memory leaks over time for tries that are modified often. There\nwas originally code to do this, but was removed during refactoring in\n2016 and never reworked. Now that we have proper parent pointers from\nthe previous commits, we can implement this properly.\n\nIn order to reduce branching and expensive comparisons, we want to keep\nthe double pointer for parent assignment (which lets us easily chain up\nto the root), but we still need to actually get the parent\u0027s base\naddress. So encode the bit number into the last two bits of the pointer,\nand pack and unpack it as needed. This is a little bit clumsy but is the\nfastest and less memory wasteful of the compromises. Note that we align\nthe root struct here to a minimum of 4, because it\u0027s embedded into a\nlarger struct, and we\u0027re relying on having the bottom two bits for our\nflag, which would only be 16-bit aligned on m68k.\n\nThe existing macro-based helpers were a bit unwieldy for adding the bit\npacking to, so this commit replaces them with safer and clearer ordinary\nfunctions.\n\nWe add a test to the randomized/fuzzer part of the selftests, to free\nthe randomized tries by-peer, refuzz it, and repeat, until it\u0027s supposed\nto be empty, and then then see if that actually resulted in the whole\nthing being emptied. That combined with kmemcheck should hopefully make\nsure this commit is doing what it should. Along the way this resulted in\nvarious other cleanups of the tests and fixes for recent graphviz.\n\nSigned-off-by: Jason A. Donenfeld \u003cJason@zx2c4.com\u003e\n"
    },
    {
      "commit": "03add828b72f2153a5fe7a507b3bc634ca2818fb",
      "tree": "16494a8acd952a62306775f9936cd5bbdb727b60",
      "parents": [
        "b56d48ce67ebd5222fbc844d05b24a58e320a853"
      ],
      "author": {
        "name": "Jason A. Donenfeld",
        "email": "Jason@zx2c4.com",
        "time": "Thu May 20 14:36:41 2021 +0200"
      },
      "committer": {
        "name": "Jason A. Donenfeld",
        "email": "Jason@zx2c4.com",
        "time": "Fri Jun 04 16:57:59 2021 +0200"
      },
      "message": "allowedips: allocate nodes in kmem_cache\n\nThe previous commit moved from O(n) to O(1) for removal, but in the\nprocess introduced an additional pointer member to a struct that\nincreased the size from 60 to 68 bytes, putting nodes in the 128-byte\nslab. With deployed systems having as many as 2 million nodes, this\nrepresents a significant doubling in memory usage (128 MiB -\u003e 256 MiB).\nFix this by using our own kmem_cache, that\u0027s sized exactly right. This\nalso makes wireguard\u0027s memory usage more transparent in tools like\nslabtop and /proc/slabinfo.\n\nSuggested-by: Arnd Bergmann \u003carnd@arndb.de\u003e\nSuggested-by: Matthew Wilcox \u003cwilly@infradead.org\u003e\nSigned-off-by: Jason A. Donenfeld \u003cJason@zx2c4.com\u003e\n"
    },
    {
      "commit": "b56d48ce67ebd5222fbc844d05b24a58e320a853",
      "tree": "e6787b14ee6489f76860b5ce2e8c5b197435a198",
      "parents": [
        "3c14c4bf90f37ad5d0bc6e0e0e7972f9ae4ad3ed"
      ],
      "author": {
        "name": "Jason A. Donenfeld",
        "email": "Jason@zx2c4.com",
        "time": "Thu May 20 01:21:03 2021 +0200"
      },
      "committer": {
        "name": "Jason A. Donenfeld",
        "email": "Jason@zx2c4.com",
        "time": "Fri Jun 04 16:57:59 2021 +0200"
      },
      "message": "allowedips: remove nodes in O(1)\n\nPreviously, deleting peers would require traversing the entire trie in\norder to rebalance nodes and safely free them. This meant that removing\n1000 peers from a trie with a half million nodes would take an extremely\nlong time, during which we\u0027re holding the rtnl lock. Large-scale users\nwere reporting 200ms latencies added to the networking stack as a whole\nevery time their userspace software would queue up significant removals.\nThat\u0027s a serious situation.\n\nThis commit fixes that by maintaining a double pointer to the parent\u0027s\nbit pointer for each node, and then using the already existing node list\nbelonging to each peer to go directly to the node, fix up its pointers,\nand free it with RCU. This means removal is O(1) instead of O(n), and we\ndon\u0027t use gobs of stack.\n\nThe removal algorithm has the same downside as the code that it fixes:\nit won\u0027t collapse needlessly long runs of fillers.  We can enhance that\nin the future if it ever becomes a problem. This commit documents that\nlimitation with a TODO comment in code, a small but meaningful\nimprovement over the prior situation.\n\nCurrently the biggest flaw, which the next commit addresses, is that\nbecause this increases the node size on 64-bit machines from 60 bytes to\n68 bytes. 60 rounds up to 64, but 68 rounds up to 128. So we wind up\nusing twice as much memory per node, because of power-of-two\nallocations, which is a big bummer. We\u0027ll need to figure something out\nthere.\n\nSigned-off-by: Jason A. Donenfeld \u003cJason@zx2c4.com\u003e\n"
    },
    {
      "commit": "3c14c4bf90f37ad5d0bc6e0e0e7972f9ae4ad3ed",
      "tree": "1cf656b218d5470c75ff738d5f9873fc1d39bfee",
      "parents": [
        "4d8b7edca7c1cc7894007cd378acb30e870d90f5"
      ],
      "author": {
        "name": "Jason A. Donenfeld",
        "email": "Jason@zx2c4.com",
        "time": "Wed Apr 21 17:03:25 2021 -0600"
      },
      "committer": {
        "name": "Jason A. Donenfeld",
        "email": "Jason@zx2c4.com",
        "time": "Fri Jun 04 16:57:59 2021 +0200"
      },
      "message": "allowedips: initialize list head in selftest\n\nThe randomized trie tests weren\u0027t initializing the dummy peer list head,\nresulting in a NULL pointer dereference when used. Fix this by\ninitializing it in the randomized trie test, just like we do for the\nstatic unit test.\n\nWhile we\u0027re at it, all of the other strings like this have the word\n\"self-test\", so add it to the missing place here.\n\nSigned-off-by: Jason A. Donenfeld \u003cJason@zx2c4.com\u003e\n"
    },
    {
      "commit": "4d8b7edca7c1cc7894007cd378acb30e870d90f5",
      "tree": "85fe4726e6575634e4fb4adb5208dd425ea9e556",
      "parents": [
        "6fbc0e62842cefac784a817cd70e90d5e29fe816"
      ],
      "author": {
        "name": "Jason A. Donenfeld",
        "email": "Jason@zx2c4.com",
        "time": "Thu May 20 14:15:43 2021 +0200"
      },
      "committer": {
        "name": "Jason A. Donenfeld",
        "email": "Jason@zx2c4.com",
        "time": "Fri Jun 04 16:57:59 2021 +0200"
      },
      "message": "peer: allocate in kmem_cache\n\nWith deployments having upwards of 600k peers now, this somewhat heavy\nstructure could benefit from more fine-grained allocations.\nSpecifically, instead of using a 2048-byte slab for a 1544-byte object,\nwe can now use 1544-byte objects directly, thus saving almost 25%\nper-peer, or with 600k peers, that\u0027s a savings of 303 MiB. This also\nmakes wireguard\u0027s memory usage more transparent in tools like slabtop\nand /proc/slabinfo.\n\nSuggested-by: Arnd Bergmann \u003carnd@arndb.de\u003e\nSuggested-by: Matthew Wilcox \u003cwilly@infradead.org\u003e\nSigned-off-by: Jason A. Donenfeld \u003cJason@zx2c4.com\u003e\n"
    },
    {
      "commit": "6fbc0e62842cefac784a817cd70e90d5e29fe816",
      "tree": "de8e7777bd2216b1c93110180389eee876958ee2",
      "parents": [
        "405caf01e9b234bc512ec93ac055d57336ce18d9"
      ],
      "author": {
        "name": "Jason A. Donenfeld",
        "email": "Jason@zx2c4.com",
        "time": "Wed May 19 17:55:51 2021 +0200"
      },
      "committer": {
        "name": "Jason A. Donenfeld",
        "email": "Jason@zx2c4.com",
        "time": "Wed Jun 02 18:31:09 2021 +0200"
      },
      "message": "global: use synchronize_net rather than synchronize_rcu\n\nMany of the synchronization points are sometimes called under the rtnl\nlock, which means we should use synchronize_net rather than\nsynchronize_rcu. Under the hood, this expands to using the expedited\nflavor of function in the event that rtnl is held, in order to not stall\nother concurrent changes.\n\nThis fixes some very, very long delays when removing multiple peers at\nonce, which would cause some operations to take several minutes.\n\nSigned-off-by: Jason A. Donenfeld \u003cJason@zx2c4.com\u003e\n"
    },
    {
      "commit": "405caf01e9b234bc512ec93ac055d57336ce18d9",
      "tree": "21203c1129be18734b1eecb5a9bb5b758dc2fe44",
      "parents": [
        "b50ef4dc456178d6d0bc531936501f12f11c2ea8"
      ],
      "author": {
        "name": "Jason A. Donenfeld",
        "email": "Jason@zx2c4.com",
        "time": "Mon May 31 14:28:46 2021 +0200"
      },
      "committer": {
        "name": "Jason A. Donenfeld",
        "email": "Jason@zx2c4.com",
        "time": "Wed Jun 02 18:31:09 2021 +0200"
      },
      "message": "kbuild: do not use -O3\n\nApparently, various versions of gcc have O3-related miscompiles. Looking\nat the difference between -O2 and -O3 for gcc 11 doesn\u0027t indicate\nmiscompiles, but the difference also doesn\u0027t seem so significant for\nperformance that it\u0027s worth risking.\n\nLink: https://lore.kernel.org/lkml/CAHk-\u003dwjuoGyxDhAF8SsrTkN0-YfCx7E6jUN3ikC_tn2AKWTTsA@mail.gmail.com/\nLink: https://lore.kernel.org/lkml/CAHmME9otB5Wwxp7H8bR_i2uH2esEMvoBMC8uEXBMH9p0q1s6Bw@mail.gmail.com/\nReported-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\nSigned-off-by: Jason A. Donenfeld \u003cJason@zx2c4.com\u003e\n"
    },
    {
      "commit": "b50ef4dc456178d6d0bc531936501f12f11c2ea8",
      "tree": "cf64b8d0626a37300285f82cbc68f070cda60fff",
      "parents": [
        "e67b7226a3b2be2156a480cfe2d5a12c80fcdec1"
      ],
      "author": {
        "name": "Jason A. Donenfeld",
        "email": "Jason@zx2c4.com",
        "time": "Mon May 31 14:41:52 2021 +0200"
      },
      "committer": {
        "name": "Jason A. Donenfeld",
        "email": "Jason@zx2c4.com",
        "time": "Wed Jun 02 18:31:09 2021 +0200"
      },
      "message": "netns: make sure rp_filter is disabled on vethc\n\nSome distros may enable strict rp_filter by default, which will prevent\nvethc from receiving the packets with an unroutable reverse path address.\n\nReported-by: Hangbin Liu \u003cliuhangbin@gmail.com\u003e\nSigned-off-by: Jason A. Donenfeld \u003cJason@zx2c4.com\u003e\n"
    },
    {
      "commit": "e67b7226a3b2be2156a480cfe2d5a12c80fcdec1",
      "tree": "8e4ddd925b02e5ba4ff636f6c4aa9a445980fd15",
      "parents": [
        "1edffe201ad08d70fe74290b657a929cd4229df5"
      ],
      "author": {
        "name": "Jason A. Donenfeld",
        "email": "Jason@zx2c4.com",
        "time": "Sat Apr 24 16:49:45 2021 -0400"
      },
      "committer": {
        "name": "Jason A. Donenfeld",
        "email": "Jason@zx2c4.com",
        "time": "Sat Apr 24 16:49:45 2021 -0400"
      },
      "message": "version: bump\n\nSigned-off-by: Jason A. Donenfeld \u003cJason@zx2c4.com\u003e\n"
    },
    {
      "commit": "1edffe201ad08d70fe74290b657a929cd4229df5",
      "tree": "8597c72182925f9b9d2df292f3a3a63503dfa159",
      "parents": [
        "2cf9543bedc68b29760f85622ae228a256082ac6"
      ],
      "author": {
        "name": "Thadeu Lima de Souza Cascardo",
        "email": "cascardo@canonical.com",
        "time": "Fri Apr 23 14:19:38 2021 -0300"
      },
      "committer": {
        "name": "Jason A. Donenfeld",
        "email": "Jason@zx2c4.com",
        "time": "Fri Apr 23 14:32:21 2021 -0600"
      },
      "message": "Revert \"compat: skb_mark_not_on_list will be backported to Ubuntu 18.04\"\n\nThis reverts commit cad80597c7947f0def83caf8cb56aff0149c83a8.\n\nBecause this commit has not been backported so far, due to the implications\nof building Ubuntu\u0027s backport of wireguard in a timely manner.\n\nFor now, reverting this fix would allow wireguard-linux-compat CI to work\non Ubuntu 18.04.\n\nA different fix or the same one can be applied again when the time is\nright.\n\nSigned-off-by: Thadeu Lima de Souza Cascardo \u003ccascardo@canonical.com\u003e\nSigned-off-by: Jason A. Donenfeld \u003cJason@zx2c4.com\u003e\n"
    },
    {
      "commit": "2cf9543bedc68b29760f85622ae228a256082ac6",
      "tree": "f45cab3583413796305ef98dd114a30acc749fb4",
      "parents": [
        "122f06bfd8fc7b06a0899fa9adc4ce8e06900d98"
      ],
      "author": {
        "name": "Peter Georg",
        "email": "peter.georg@physik.uni-regensburg.de",
        "time": "Mon Apr 19 22:51:25 2021 +0200"
      },
      "committer": {
        "name": "Jason A. Donenfeld",
        "email": "Jason@zx2c4.com",
        "time": "Thu Apr 22 19:51:51 2021 -0600"
      },
      "message": "compat: update and improve detection of CentOS Stream 8\n\nCentOS Stream 8 by now (4.18.0-301.1.el8) reports RHEL_MINOR\u003d5. The\ncurrent RHEL 8 minor release is still 3. RHEL 8.4 is in beta. Replace\nequal comparison by greater equal to (hopefully) be a little bit more\nfuture proof.\n\nSigned-off-by: Peter Georg \u003cpeter.georg@physik.uni-regensburg.de\u003e\nSigned-off-by: Jason A. Donenfeld \u003cJason@zx2c4.com\u003e\n"
    },
    {
      "commit": "122f06bfd8fc7b06a0899fa9adc4ce8e06900d98",
      "tree": "5feab430bce107623d1129c44e6dbb77e9576d80",
      "parents": [
        "6e36d328018f8b525b0de0649453f222035ad1d8"
      ],
      "author": {
        "name": "Jason A. Donenfeld",
        "email": "Jason@zx2c4.com",
        "time": "Sun Mar 07 08:14:33 2021 -0700"
      },
      "committer": {
        "name": "Jason A. Donenfeld",
        "email": "Jason@zx2c4.com",
        "time": "Sun Mar 07 08:14:33 2021 -0700"
      },
      "message": "compat: icmp_ndo_send functions were backported extensively\n\nSigned-off-by: Jason A. Donenfeld \u003cJason@zx2c4.com\u003e\n"
    },
    {
      "commit": "6e36d328018f8b525b0de0649453f222035ad1d8",
      "tree": "128dd668fb11c5445bb09f10cbf4828a1c452ba0",
      "parents": [
        "72a0fe52debcaf1845bb3d1600fcd468b16e051e"
      ],
      "author": {
        "name": "Jason A. Donenfeld",
        "email": "Jason@zx2c4.com",
        "time": "Fri Feb 19 15:08:33 2021 +0100"
      },
      "committer": {
        "name": "Jason A. Donenfeld",
        "email": "Jason@zx2c4.com",
        "time": "Fri Feb 19 15:08:33 2021 +0100"
      },
      "message": "version: bump\n\nSigned-off-by: Jason A. Donenfeld \u003cJason@zx2c4.com\u003e\n"
    },
    {
      "commit": "72a0fe52debcaf1845bb3d1600fcd468b16e051e",
      "tree": "c718e8be6dd71cf89d46c1e7b151ce08aa6d6dd9",
      "parents": [
        "51aff055200dbe1b1350e5607fc047e88251b08f"
      ],
      "author": {
        "name": "Jason A. Donenfeld",
        "email": "Jason@zx2c4.com",
        "time": "Fri Feb 19 12:53:31 2021 +0100"
      },
      "committer": {
        "name": "Jason A. Donenfeld",
        "email": "Jason@zx2c4.com",
        "time": "Fri Feb 19 12:53:31 2021 +0100"
      },
      "message": "qemu: bump default kernel version\n\nSigned-off-by: Jason A. Donenfeld \u003cJason@zx2c4.com\u003e\n"
    },
    {
      "commit": "51aff055200dbe1b1350e5607fc047e88251b08f",
      "tree": "5eb70a9394ff538a8b08355f3c0c59af54d69771",
      "parents": [
        "cad80597c7947f0def83caf8cb56aff0149c83a8"
      ],
      "author": {
        "name": "Jason A. Donenfeld",
        "email": "Jason@zx2c4.com",
        "time": "Fri Feb 19 12:49:21 2021 +0100"
      },
      "committer": {
        "name": "Jason A. Donenfeld",
        "email": "Jason@zx2c4.com",
        "time": "Fri Feb 19 12:53:05 2021 +0100"
      },
      "message": "compat: zero out skb-\u003ecb before icmp\n\nThis corresponds to the fancier upstream commit that\u0027s still on lkml,\nwhich passes a zeroed ip_options struct to __icmp_send.\n\nSigned-off-by: Jason A. Donenfeld \u003cJason@zx2c4.com\u003e\n"
    },
    {
      "commit": "cad80597c7947f0def83caf8cb56aff0149c83a8",
      "tree": "77a013648d2cf4b5b407fae7273603ce511b3efc",
      "parents": [
        "635aa0b75f54eddbcb29fda282d05db4b66f803c"
      ],
      "author": {
        "name": "Thadeu Lima de Souza Cascardo",
        "email": "cascardo@canonical.com",
        "time": "Thu Feb 18 14:01:32 2021 -0300"
      },
      "committer": {
        "name": "Jason A. Donenfeld",
        "email": "Jason@zx2c4.com",
        "time": "Thu Feb 18 20:28:54 2021 +0100"
      },
      "message": "compat: skb_mark_not_on_list will be backported to Ubuntu 18.04\n\nlinux commit 22f6bbb7bcfcef0b373b0502a7ff390275c575dd (\"net: use\nskb_list_del_init() to remove from RX sublists\") will be backported to Ubuntu\n18.04 default kernel, which is based on linux 4.15.\n\nSigned-off-by: Thadeu Lima de Souza Cascardo \u003ccascardo@canonical.com\u003e\nSigned-off-by: Jason A. Donenfeld \u003cJason@zx2c4.com\u003e\n"
    },
    {
      "commit": "635aa0b75f54eddbcb29fda282d05db4b66f803c",
      "tree": "dc21ad7b2368795865ff3b8564f9b7ac0a45b65c",
      "parents": [
        "a63edc04c19ab0d46769dd66c869f3c48fd35d3d"
      ],
      "author": {
        "name": "Jason A. Donenfeld",
        "email": "Jason@zx2c4.com",
        "time": "Thu Feb 18 15:19:46 2021 +0100"
      },
      "committer": {
        "name": "Jason A. Donenfeld",
        "email": "Jason@zx2c4.com",
        "time": "Thu Feb 18 15:22:33 2021 +0100"
      },
      "message": "queueing: get rid of per-peer ring buffers\n\nHaving two ring buffers per-peer means that every peer results in two\nmassive ring allocations. On an 8-core x86_64 machine, this commit\nreduces the per-peer allocation from 18,688 bytes to 1,856 bytes, which\nis an 90% reduction. Ninety percent! With some single-machine\ndeployments approaching 500,000 peers, we\u0027re talking about a reduction\nfrom 7 gigs of memory down to 700 megs of memory.\n\nIn order to get rid of these per-peer allocations, this commit switches\nto using a list-based queueing approach. Currently GSO fragments are\nchained together using the skb-\u003enext pointer (the skb_list_* singly\nlinked list approach), so we form the per-peer queue around the unused\nskb-\u003eprev pointer (which sort of makes sense because the links are\npointing backwards). Use of skb_queue_* is not possible here, because\nthat is based on doubly linked lists and spinlocks. Multiple cores can\nwrite into the queue at any given time, because its writes occur in the\nstart_xmit path or in the udp_recv path. But reads happen in a single\nworkqueue item per-peer, amounting to a multi-producer, single-consumer\nparadigm.\n\nThe MPSC queue is implemented locklessly and never blocks. However, it\nis not linearizable (though it is serializable), with a very tight and\nunlikely race on writes, which, when hit (some tiny fraction of the\n0.15% of partial adds on a fully loaded 16-core x86_64 system), causes\nthe queue reader to terminate early. However, because every packet sent\nqueues up the same workqueue item after it is fully added, the worker\nresumes again, and stopping early isn\u0027t actually a problem, since at\nthat point the packet wouldn\u0027t have yet been added to the encryption\nqueue. These properties allow us to avoid disabling interrupts or\nspinning. The design is based on Dmitry Vyukov\u0027s algorithm [1].\n\nPerformance-wise, ordinarily list-based queues aren\u0027t preferable to\nringbuffers, because of cache misses when following pointers around.\nHowever, we *already* have to follow the adjacent pointers when working\nthrough fragments, so there shouldn\u0027t actually be any change there. A\npotential downside is that dequeueing is a bit more complicated, but the\nptr_ring structure used prior had a spinlock when dequeueing, so all and\nall the difference appears to be a wash.\n\nActually, from profiling, the biggest performance hit, by far, of this\ncommit winds up being atomic_add_unless(count, 1, max) and atomic_\ndec(count), which account for the majority of CPU time, according to\nperf. In that sense, the previous ring buffer was superior in that it\ncould check if it was full by head\u003d\u003dtail, which the list-based approach\ncannot do.\n\nBut all and all, this enables us to get massive memory savings, allowing\nWireGuard to scale for real world deployments, without taking much of a\nperformance hit.\n\n[1] http://www.1024cores.net/home/lock-free-algorithms/queues/intrusive-mpsc-node-based-queue\n\nSigned-off-by: Jason A. Donenfeld \u003cJason@zx2c4.com\u003e\n"
    },
    {
      "commit": "a63edc04c19ab0d46769dd66c869f3c48fd35d3d",
      "tree": "461611b9273ff6f16722afc73d68c1a30ccfa98c",
      "parents": [
        "ad32b95c94897850f906d6e6a160e6cc803af85b"
      ],
      "author": {
        "name": "Jason A. Donenfeld",
        "email": "Jason@zx2c4.com",
        "time": "Thu Feb 18 13:38:00 2021 +0100"
      },
      "committer": {
        "name": "Jason A. Donenfeld",
        "email": "Jason@zx2c4.com",
        "time": "Thu Feb 18 15:22:33 2021 +0100"
      },
      "message": "device: do not generate ICMP for non-IP packets\n\nIf skb-\u003eprotocol doesn\u0027t match the actual skb-\u003edata header, it\u0027s\nprobably not a good idea to pass it off to icmp{,v6}_ndo_send, which is\nexpecting to reply to a valid IP packet. So this commit has that early\nmismatch case jump to a later error label.\n\nSigned-off-by: Jason A. Donenfeld \u003cJason@zx2c4.com\u003e\n"
    },
    {
      "commit": "ad32b95c94897850f906d6e6a160e6cc803af85b",
      "tree": "18fbdbc48644e50b5099026e8b674dbe392f42ff",
      "parents": [
        "8420c794cd17d86fea5f713ce52617b4ecf0ec29"
      ],
      "author": {
        "name": "Jason A. Donenfeld",
        "email": "Jason@zx2c4.com",
        "time": "Mon Feb 08 15:14:42 2021 +0100"
      },
      "committer": {
        "name": "Jason A. Donenfeld",
        "email": "Jason@zx2c4.com",
        "time": "Thu Feb 18 15:22:33 2021 +0100"
      },
      "message": "selftests: test multiple parallel streams\n\nIn order to test ndo_start_xmit being called in parallel, explicitly add\nseparate tests, which should all run on different cores. This should\nhelp tease out bugs associated with queueing up packets from different\ncores in parallel. Currently, it hasn\u0027t found those types of bugs, but\ngiven future planned work, this is a useful regression to avoid.\n\nSigned-off-by: Jason A. Donenfeld \u003cJason@zx2c4.com\u003e\n"
    },
    {
      "commit": "8420c794cd17d86fea5f713ce52617b4ecf0ec29",
      "tree": "3cecd73899c51cb4e98e4d1d3af87f86142e5634",
      "parents": [
        "bb0ed3f6d91f19447732f667dac077dfd7338d57"
      ],
      "author": {
        "name": "Jason A. Donenfeld",
        "email": "Jason@zx2c4.com",
        "time": "Sun Feb 07 14:47:13 2021 +0100"
      },
      "committer": {
        "name": "Jason A. Donenfeld",
        "email": "Jason@zx2c4.com",
        "time": "Mon Feb 08 15:18:39 2021 +0100"
      },
      "message": "peer: put frequently used members above cache lines\n\nThe is_dead boolean is checked for every single packet, while the\ninternal_id member is used basically only for pr_debug messages. So it\nmakes sense to hoist up is_dead into some space formerly unused by a\nstruct hole, while demoting internal_api to below the lowest struct\ncache line.\n\nSigned-off-by: Jason A. Donenfeld \u003cJason@zx2c4.com\u003e\n"
    },
    {
      "commit": "bb0ed3f6d91f19447732f667dac077dfd7338d57",
      "tree": "7f49021816fe3f69b27877ddffc73f3717128f04",
      "parents": [
        "897b4b9152d3680da1db4c380aaa48a52313c680"
      ],
      "author": {
        "name": "Jason A. Donenfeld",
        "email": "Jason@zx2c4.com",
        "time": "Sun Feb 07 00:56:44 2021 +0100"
      },
      "committer": {
        "name": "Jason A. Donenfeld",
        "email": "Jason@zx2c4.com",
        "time": "Sun Feb 07 18:03:47 2021 +0100"
      },
      "message": "compat: redefine version constants for sublevel\u003e\u003d256\n\nWith the 4.4.256 and 4.9.256 kernels, the previous calculation for\ninteger comparison overflowed. This commit redefines the broken\nconstants to have more space for the sublevel.\n\nSigned-off-by: Jason A. Donenfeld \u003cJason@zx2c4.com\u003e\n"
    },
    {
      "commit": "897b4b9152d3680da1db4c380aaa48a52313c680",
      "tree": "a953eb01e1aa214c5eef42d8a2f7715f4b7955af",
      "parents": [
        "c3c51d07959a55602bb3c40bf9b2fb694bcc8f5a"
      ],
      "author": {
        "name": "Jason A. Donenfeld",
        "email": "Jason@zx2c4.com",
        "time": "Sun Feb 07 16:11:19 2021 +0100"
      },
      "committer": {
        "name": "Jason A. Donenfeld",
        "email": "Jason@zx2c4.com",
        "time": "Sun Feb 07 16:11:33 2021 +0100"
      },
      "message": "compat: remove unused version.h headers\n\nWe don\u0027t need this in all files, and it just complicates things.\n\nSigned-off-by: Jason A. Donenfeld \u003cJason@zx2c4.com\u003e\n"
    },
    {
      "commit": "c3c51d07959a55602bb3c40bf9b2fb694bcc8f5a",
      "tree": "731092366e5b2ff019fc71411da669d053a9f103",
      "parents": [
        "1bb90881971c226d45c0abd1ac16ce3d6b77fc5f"
      ],
      "author": {
        "name": "Jason A. Donenfeld",
        "email": "Jason@zx2c4.com",
        "time": "Sun Jan 24 14:45:29 2021 +0100"
      },
      "committer": {
        "name": "Jason A. Donenfeld",
        "email": "Jason@zx2c4.com",
        "time": "Sun Jan 24 14:45:29 2021 +0100"
      },
      "message": "version: bump\n\nSigned-off-by: Jason A. Donenfeld \u003cJason@zx2c4.com\u003e\n"
    },
    {
      "commit": "1bb90881971c226d45c0abd1ac16ce3d6b77fc5f",
      "tree": "51b39dc61d24fd4e2ff4dff461fbb75e7210e76c",
      "parents": [
        "d6d5caa4f16f0fb9dcadca58e6adf5160f13acbd"
      ],
      "author": {
        "name": "Jason A. Donenfeld",
        "email": "Jason@zx2c4.com",
        "time": "Sun Jan 24 14:09:09 2021 +0100"
      },
      "committer": {
        "name": "Jason A. Donenfeld",
        "email": "Jason@zx2c4.com",
        "time": "Sun Jan 24 14:09:09 2021 +0100"
      },
      "message": "compat: skb_mark_not_on_list was backported to 4.14\n\nSigned-off-by: Jason A. Donenfeld \u003cJason@zx2c4.com\u003e\n"
    },
    {
      "commit": "d6d5caa4f16f0fb9dcadca58e6adf5160f13acbd",
      "tree": "fc8943c1c398ec2b3cb5834da74a3ef44b95fe62",
      "parents": [
        "47e27821554fe0299c008572976ea378c0195f92"
      ],
      "author": {
        "name": "Jason A. Donenfeld",
        "email": "Jason@zx2c4.com",
        "time": "Wed Jan 13 18:36:37 2021 +0100"
      },
      "committer": {
        "name": "Jason A. Donenfeld",
        "email": "Jason@zx2c4.com",
        "time": "Wed Jan 13 18:36:37 2021 +0100"
      },
      "message": "compat: SYM_FUNC_* was backported to c8s\n\nSigned-off-by: Jason A. Donenfeld \u003cJason@zx2c4.com\u003e\n"
    },
    {
      "commit": "47e27821554fe0299c008572976ea378c0195f92",
      "tree": "40c2df65e1961c2e9b2a0a93dad21691c664ba3d",
      "parents": [
        "f01be9896efb38a4db3dd558d53cd9aa573da2fe"
      ],
      "author": {
        "name": "Jason A. Donenfeld",
        "email": "Jason@zx2c4.com",
        "time": "Mon Dec 21 12:54:57 2020 +0100"
      },
      "committer": {
        "name": "Jason A. Donenfeld",
        "email": "Jason@zx2c4.com",
        "time": "Mon Dec 21 12:54:57 2020 +0100"
      },
      "message": "version: bump\n\nSigned-off-by: Jason A. Donenfeld \u003cJason@zx2c4.com\u003e\n"
    },
    {
      "commit": "f01be9896efb38a4db3dd558d53cd9aa573da2fe",
      "tree": "8f95e089ba42d7565127a7624b04e50d8dec26f8",
      "parents": [
        "27300724823f7ecce3fcbcee8e567a80d16f2b4c"
      ],
      "author": {
        "name": "Jann Horn",
        "email": "jannh@google.com",
        "time": "Tue Dec 15 22:26:40 2020 +0100"
      },
      "committer": {
        "name": "Jason A. Donenfeld",
        "email": "Jason@zx2c4.com",
        "time": "Mon Dec 21 12:35:47 2020 +0100"
      },
      "message": "socket: remove bogus __be32 annotation\n\nThe endpoint-\u003esrc_if4 has nothing to do with fixed-endian numbers; remove\nthe bogus annotation.\n\nThis was introduced in\nhttps://git.zx2c4.com/wireguard-monolithic-historical/commit?id\u003d14e7d0a499a676ec55176c0de2f9fcbd34074a82\nin the historical WireGuard repo because the old code used to\nzero-initialize multiple members as follows:\n\n    endpoint-\u003esrc4.s_addr \u003d endpoint-\u003esrc_if4 \u003d fl.saddr \u003d 0;\n\nBecause fl.saddr is fixed-endian and an assignment returns a value with the\ntype of its left operand, this meant that sparse detected an assignment\nbetween values of different endianness.\n\nSince then, this assignment was already split up into separate statements;\njust the cast survived.\n\nSigned-off-by: Jann Horn \u003cjannh@google.com\u003e\nSigned-off-by: Jason A. Donenfeld \u003cJason@zx2c4.com\u003e\n"
    },
    {
      "commit": "27300724823f7ecce3fcbcee8e567a80d16f2b4c",
      "tree": "f53650c4fab9117807467d2ce41f78965ec51ef2",
      "parents": [
        "8dcc75dbbe0a7b82c7c9a9388a49d1e32723d8a9"
      ],
      "author": {
        "name": "Antonio Quartulli",
        "email": "a@unstable.cc",
        "time": "Thu Dec 10 09:55:05 2020 +0100"
      },
      "committer": {
        "name": "Jason A. Donenfeld",
        "email": "Jason@zx2c4.com",
        "time": "Mon Dec 21 12:35:43 2020 +0100"
      },
      "message": "global: avoid double unlikely() notation when using IS_ERR()\n\nThe definition of IS_ERR() already applies the unlikely() notation\nwhen checking the error status of the passed pointer. For this\nreason there is no need to have the same notation outside of\nIS_ERR() itself.\n\nClean up code by removing redundant notation.\n\nSigned-off-by: Antonio Quartulli \u003ca@unstable.cc\u003e\nSigned-off-by: Jason A. Donenfeld \u003cJason@zx2c4.com\u003e\n"
    },
    {
      "commit": "8dcc75dbbe0a7b82c7c9a9388a49d1e32723d8a9",
      "tree": "e1ad418df8affe71698827debf75ea2b3a1b8ef3",
      "parents": [
        "d2faea81c32ce04d061237e34cfad3c36e93be35"
      ],
      "author": {
        "name": "Jason A. Donenfeld",
        "email": "Jason@zx2c4.com",
        "time": "Sat Dec 19 13:11:48 2020 +0100"
      },
      "committer": {
        "name": "Jason A. Donenfeld",
        "email": "Jason@zx2c4.com",
        "time": "Sat Dec 19 13:11:48 2020 +0100"
      },
      "message": "simd: detect -rt kernels \u003e\u003d 5.4\n\nThe 5.4 series of -rt kernels moved from PREEMPT_RT_BASE/PREEMPT_RT_FULL\nto PREEMPT_RT, so we have to account for it here. Otherwise users get\nscheduling-while-atomic splats.\n\nReported-by: Erik Schuitema \u003cerik@essd.nl\u003e\nSigned-off-by: Jason A. Donenfeld \u003cJason@zx2c4.com\u003e\n"
    },
    {
      "commit": "d2faea81c32ce04d061237e34cfad3c36e93be35",
      "tree": "6e5e795ac07dc35f484e4290fd8e9533c3e667ee",
      "parents": [
        "f7f55464a156e1181fa76d9c7e2fc0d495f2357e"
      ],
      "author": {
        "name": "L.W.Reek",
        "email": "syphyr@gmail.com",
        "time": "Wed Dec 16 22:24:47 2020 +0100"
      },
      "committer": {
        "name": "Jason A. Donenfeld",
        "email": "Jason@zx2c4.com",
        "time": "Wed Dec 16 22:24:47 2020 +0100"
      },
      "message": "gitignore: ignore intermediary build file\n\nSigned-off-by: L.W.Reek \u003csyphyr@gmail.com\u003e\nSigned-off-by: Jason A. Donenfeld \u003cJason@zx2c4.com\u003e\n"
    },
    {
      "commit": "f7f55464a156e1181fa76d9c7e2fc0d495f2357e",
      "tree": "b404e4b2b41b155ca99e455041fe93fe3834a615",
      "parents": [
        "fe402261666821514377d06c2c68ed9bc19e7634"
      ],
      "author": {
        "name": "Jason A. Donenfeld",
        "email": "Jason@zx2c4.com",
        "time": "Mon Dec 14 17:33:51 2020 +0100"
      },
      "committer": {
        "name": "Jason A. Donenfeld",
        "email": "Jason@zx2c4.com",
        "time": "Mon Dec 14 17:33:51 2020 +0100"
      },
      "message": "compat: drop rhel 8.2, add rhel 8.4 support\n\nSigned-off-by: Jason A. Donenfeld \u003cJason@zx2c4.com\u003e\n"
    },
    {
      "commit": "fe402261666821514377d06c2c68ed9bc19e7634",
      "tree": "002944bf2bc6dc047dfbcd876eea3772b5e0c20a",
      "parents": [
        "d0bf51bd07976467e2987c83a4950b97f3a333ec"
      ],
      "author": {
        "name": "Jason A. Donenfeld",
        "email": "Jason@zx2c4.com",
        "time": "Thu Nov 12 10:02:14 2020 +0100"
      },
      "committer": {
        "name": "Jason A. Donenfeld",
        "email": "Jason@zx2c4.com",
        "time": "Thu Nov 12 10:02:14 2020 +0100"
      },
      "message": "version: bump\n\nSigned-off-by: Jason A. Donenfeld \u003cJason@zx2c4.com\u003e\n"
    },
    {
      "commit": "d0bf51bd07976467e2987c83a4950b97f3a333ec",
      "tree": "58f761dfb2619ac32d420292ce91aa2e490985bb",
      "parents": [
        "ce8faa3ee266ea69431805e6ed4bd7102d982508"
      ],
      "author": {
        "name": "Jason A. Donenfeld",
        "email": "Jason@zx2c4.com",
        "time": "Thu Nov 12 09:45:29 2020 +0100"
      },
      "committer": {
        "name": "Jason A. Donenfeld",
        "email": "Jason@zx2c4.com",
        "time": "Thu Nov 12 09:45:29 2020 +0100"
      },
      "message": "qemu: bump default testing version\n\nSigned-off-by: Jason A. Donenfeld \u003cJason@zx2c4.com\u003e\n"
    },
    {
      "commit": "ce8faa3ee266ea69431805e6ed4bd7102d982508",
      "tree": "6358cb349e3ac6d84d3e95e387ec8c71e56a240e",
      "parents": [
        "da5646fea1554a5dcaa1f26c403a43f167521899"
      ],
      "author": {
        "name": "Jason A. Donenfeld",
        "email": "Jason@zx2c4.com",
        "time": "Thu Nov 12 09:43:38 2020 +0100"
      },
      "committer": {
        "name": "Jason A. Donenfeld",
        "email": "Jason@zx2c4.com",
        "time": "Thu Nov 12 09:43:38 2020 +0100"
      },
      "message": "compat: SYM_FUNC_{START,END} were backported to 5.4\n\nSigned-off-by: Jason A. Donenfeld \u003cJason@zx2c4.com\u003e\n"
    },
    {
      "commit": "da5646fea1554a5dcaa1f26c403a43f167521899",
      "tree": "f693f327334187852459dba9d9f08c06e00af687",
      "parents": [
        "99e954f4871d9a760451c5ada99dfaae5df256e5"
      ],
      "author": {
        "name": "Jason A. Donenfeld",
        "email": "Jason@zx2c4.com",
        "time": "Wed Nov 04 09:27:53 2020 +0100"
      },
      "committer": {
        "name": "Jason A. Donenfeld",
        "email": "Jason@zx2c4.com",
        "time": "Wed Nov 04 09:27:53 2020 +0100"
      },
      "message": "qemu: drop build support for rhel 8.2\n\nThis reverts commit feb89cab65c6ab1a6cbeeaaeb11b1a174772cea8.\n\nSigned-off-by: Jason A. Donenfeld \u003cJason@zx2c4.com\u003e\n"
    },
    {
      "commit": "99e954f4871d9a760451c5ada99dfaae5df256e5",
      "tree": "5ff5c5a3ef63fa8fe7584f0e3228682a4e8c68f3",
      "parents": [
        "25320ac50e6ddd8b935282f22dfddb579d528429"
      ],
      "author": {
        "name": "Jason A. Donenfeld",
        "email": "Jason@zx2c4.com",
        "time": "Wed Oct 28 21:11:21 2020 +0100"
      },
      "committer": {
        "name": "Jason A. Donenfeld",
        "email": "Jason@zx2c4.com",
        "time": "Thu Oct 29 13:21:14 2020 +0100"
      },
      "message": "netns: check that route_me_harder packets use the right sk\n\nIf netfilter changes the packet mark, the packet is rerouted. The\nip_route_me_harder family of functions fails to use the right sk, opting\nto instead use skb-\u003esk, resulting in a routing loop when used with\ntunnels. Fixing this inside of the compat layer with skb_orphan would\nwork but would cause other problems, by disabling TSQ, so instead we\nwarn if the calling kernel hasn\u0027t yet backported the fix for this.\n\nReported-by: Chen Minqiang \u003cptpt52@gmail.com\u003e\nSigned-off-by: Jason A. Donenfeld \u003cJason@zx2c4.com\u003e\n"
    },
    {
      "commit": "25320ac50e6ddd8b935282f22dfddb579d528429",
      "tree": "392d1325aff10313fc8e745afe47d259959a17bd",
      "parents": [
        "d97b575a47fb26f27965bdc9e537c85f86165e42"
      ],
      "author": {
        "name": "Jason A. Donenfeld",
        "email": "Jason@zx2c4.com",
        "time": "Tue Sep 08 17:35:49 2020 +0200"
      },
      "committer": {
        "name": "Jason A. Donenfeld",
        "email": "Jason@zx2c4.com",
        "time": "Wed Sep 09 13:44:46 2020 +0200"
      },
      "message": "noise: take lock when removing handshake entry from table\n\nEric reported that syzkaller found a race of this variety:\n\nCPU 1                                       CPU 2\n-------------------------------------------|---------------------------------------\nwg_index_hashtable_replace(old, ...)       |\n  if (hlist_unhashed(\u0026old-\u003eindex_hash))    |\n                                           | wg_index_hashtable_remove(old)\n                                           |   hlist_del_init_rcu(\u0026old-\u003eindex_hash)\n\t\t\t\t           |     old-\u003eindex_hash.pprev \u003d NULL\n  hlist_replace_rcu(\u0026old-\u003eindex_hash, ...) |\n    *old-\u003eindex_hash.pprev                 |\n\nSyzbot wasn\u0027t actually able to reproduce this more than once or create a\nreproducer, because the race window between checking \"hlist_unhashed\" and\ncalling \"hlist_replace_rcu\" is just so small. Adding an mdelay(5) or\nsimilar there helps make this demonstrable using this simple script:\n\n    #!/bin/bash\n    set -ex\n    trap \u0027kill $pid1; kill $pid2; ip link del wg0; ip link del wg1\u0027 EXIT\n    ip link add wg0 type wireguard\n    ip link add wg1 type wireguard\n    wg set wg0 private-key \u003c(wg genkey) listen-port 9999\n    wg set wg1 private-key \u003c(wg genkey) peer $(wg show wg0 public-key) endpoint 127.0.0.1:9999 persistent-keepalive 1\n    wg set wg0 peer $(wg show wg1 public-key)\n    ip link set wg0 up\n    yes link set wg1 up | ip -force -batch - \u0026\n    pid1\u003d$!\n    yes link set wg1 down | ip -force -batch - \u0026\n    pid2\u003d$!\n    wait\n\nThe fundumental underlying problem is that we permit calls to wg_index_\nhashtable_remove(handshake.entry) without requiring the caller to take\nthe handshake mutex that is intended to protect members of handshake\nduring mutations. This is consistently the case with calls to wg_index_\nhashtable_insert(handshake.entry) and wg_index_hashtable_replace(\nhandshake.entry), but it\u0027s missing from a pertinent callsite of wg_\nindex_hashtable_remove(handshake.entry). So, this patch makes sure that\nmutex is taken.\n\nThe original code was a little bit funky though, in the form of:\n\n    remove(handshake.entry)\n    lock(), memzero(handshake.some_members), unlock()\n    remove(handshake.entry)\n\nThe original intention of that double removal pattern outside the lock\nappears to be some attempt to prevent insertions that might happen while\nlocks are dropped during expensive crypto operations, but actually, all\ncallers of wg_index_hashtable_insert(handshake.entry) take the write\nlock and then explicitly check handshake.state, as they should, which\nthe aforementioned memzero clears, which means an insertion should\nalready be impossible. And regardless, the original intention was\nnecessarily racy, since it wasn\u0027t guaranteed that something else would\nrun after the unlock() instead of after the remove(). So, from a\nsoundness perspective, it seems positive to remove what looks like a\nhack at best.\n\nThe crash from both syzbot and from the script above is as follows:\n\n  general protection fault, probably for non-canonical address 0xdffffc0000000000: 0000 [#1] PREEMPT SMP KASAN\n  KASAN: null-ptr-deref in range [0x0000000000000000-0x0000000000000007]\n  CPU: 0 PID: 7395 Comm: kworker/0:3 Not tainted 5.9.0-rc4-syzkaller #0\n  Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 01/01/2011\n  Workqueue: wg-kex-wg1 wg_packet_handshake_receive_worker\n  RIP: 0010:hlist_replace_rcu include/linux/rculist.h:505 [inline]\n  RIP: 0010:wg_index_hashtable_replace+0x176/0x330 drivers/net/wireguard/peerlookup.c:174\n  Code: 00 fc ff df 48 89 f9 48 c1 e9 03 80 3c 01 00 0f 85 44 01 00 00 48 b9 00 00 00 00 00 fc ff df 48 8b 45 10 48 89 c6 48 c1 ee 03 \u003c80\u003e 3c 0e 00 0f 85 06 01 00 00 48 85 d2 4c 89 28 74 47 e8 a3 4f b5\n  RSP: 0018:ffffc90006a97bf8 EFLAGS: 00010246\n  RAX: 0000000000000000 RBX: ffff888050ffc4f8 RCX: dffffc0000000000\n  RDX: 0000000000000000 RSI: 0000000000000000 RDI: ffff88808e04e010\n  RBP: ffff88808e04e000 R08: 0000000000000001 R09: ffff8880543d0000\n  R10: ffffed100a87a000 R11: 000000000000016e R12: ffff8880543d0000\n  R13: ffff88808e04e008 R14: ffff888050ffc508 R15: ffff888050ffc500\n  FS:  0000000000000000(0000) GS:ffff8880ae600000(0000) knlGS:0000000000000000\n  CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033\n  CR2: 00000000f5505db0 CR3: 0000000097cf7000 CR4: 00000000001526f0\n  DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000\n  DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400\n  Call Trace:\n  wg_noise_handshake_begin_session+0x752/0xc9a drivers/net/wireguard/noise.c:820\n  wg_receive_handshake_packet drivers/net/wireguard/receive.c:183 [inline]\n  wg_packet_handshake_receive_worker+0x33b/0x730 drivers/net/wireguard/receive.c:220\n  process_one_work+0x94c/0x1670 kernel/workqueue.c:2269\n  worker_thread+0x64c/0x1120 kernel/workqueue.c:2415\n  kthread+0x3b5/0x4a0 kernel/kthread.c:292\n  ret_from_fork+0x1f/0x30 arch/x86/entry/entry_64.S:294\n\nNote that this fixes the same issue as the previous commit, but in a\nmore direct way. Upstream, the commit message of that previous commit\nhas been changed to:\n\n    wireguard: peerlookup: take lock before checking hash in replace operation\n\n    Eric\u0027s suggested fix for the previous commit\u0027s mentioned race condition\n    was to simply take the table-\u003elock in wg_index_hashtable_replace(). The\n    table-\u003elock of the hash table is supposed to protect the bucket heads,\n    not the entires, but actually, since all the mutator functions are\n    already taking it, it makes sense to take it too for the test to\n    hlist_unhashed, as a defense in depth measure, so that it no longer\n    races with deletions, regardless of what other locks are protecting\n    individual entries. This is sensible from a performance perspective\n    because, as Eric pointed out, the case of being unhashed is already the\n    unlikely case, so this won\u0027t add common contention. And comparing\n    instructions, this basically doesn\u0027t make much of a difference other\n    than pushing and popping %r13, used by the new `bool ret`. More\n    generally, I like the idea of locking consistency across table mutator\n    functions, and this might let me rest slightly easier at night.\n\nSince we\u0027ve already tagged it, we\u0027re not going to change it at this\npoint, but I include mention of it here for reference.\n\nReported-by: Eric Dumazet \u003cedumazet@google.com\u003e\nSigned-off-by: Jason A. Donenfeld \u003cJason@zx2c4.com\u003e\n"
    },
    {
      "commit": "d97b575a47fb26f27965bdc9e537c85f86165e42",
      "tree": "e27def99466bfe1918e3b491b09e56d2d0cd9f3d",
      "parents": [
        "482d020d7228628ef9ceda4d2cf955374e832ef9"
      ],
      "author": {
        "name": "Jason A. Donenfeld",
        "email": "Jason@zx2c4.com",
        "time": "Tue Sep 08 18:22:40 2020 +0200"
      },
      "committer": {
        "name": "Jason A. Donenfeld",
        "email": "Jason@zx2c4.com",
        "time": "Tue Sep 08 18:22:40 2020 +0200"
      },
      "message": "version: bump\n\nSigned-off-by: Jason A. Donenfeld \u003cJason@zx2c4.com\u003e\n"
    },
    {
      "commit": "482d020d7228628ef9ceda4d2cf955374e832ef9",
      "tree": "c112f33b3e496ffd83004c4cd698f272ab7588e2",
      "parents": [
        "dace9d04b9ab94e07104ffa8435ec49af48f7e3f"
      ],
      "author": {
        "name": "Jason A. Donenfeld",
        "email": "Jason@zx2c4.com",
        "time": "Tue Sep 08 17:35:49 2020 +0200"
      },
      "committer": {
        "name": "Jason A. Donenfeld",
        "email": "Jason@zx2c4.com",
        "time": "Tue Sep 08 17:52:58 2020 +0200"
      },
      "message": "peerlookup: take lock before checking hash in replace operation\n\nEric reported that syzkaller found a race of this variety:\n\nCPU 1                                       CPU 2\n-------------------------------------------|---------------------------------------\nwg_index_hashtable_replace(old, ...)       |\n  if (hlist_unhashed(\u0026old-\u003eindex_hash))    |\n                                           | wg_index_hashtable_remove(old)\n                                           |   hlist_del_init_rcu(\u0026old-\u003eindex_hash)\n\t\t\t\t           |     old-\u003eindex_hash.pprev \u003d NULL\n  hlist_replace_rcu(\u0026old-\u003eindex_hash, ...) |\n    *old-\u003eindex_hash.pprev                 |\n\nThe table-\u003elock of the hash table is supposed to protect the bucket\nheads, not the entires, but actually, since all the mutator functions\nare already taking it, it makes sense to take it too for the test to\nhlist_unhashed, so that it no longer races with deletions. This is fine\nbecause, as Eric pointed out, the case of being unhashed is already the\nunlikely case, so this won\u0027t add common contention. And comparing\ninstructions, this basically doesn\u0027t make much of a difference other\nthan pushing and popping %r13, used by the new `bool ret`.\n\nThe syzkaller crash is as follows:\n\n  general protection fault, probably for non-canonical address 0xdffffc0000000000: 0000 [#1] PREEMPT SMP KASAN\n  KASAN: null-ptr-deref in range [0x0000000000000000-0x0000000000000007]\n  CPU: 0 PID: 7395 Comm: kworker/0:3 Not tainted 5.9.0-rc4-syzkaller #0\n  Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 01/01/2011\n  Workqueue: wg-kex-wg1 wg_packet_handshake_receive_worker\n  RIP: 0010:hlist_replace_rcu include/linux/rculist.h:505 [inline]\n  RIP: 0010:wg_index_hashtable_replace+0x176/0x330 drivers/net/wireguard/peerlookup.c:174\n  Code: 00 fc ff df 48 89 f9 48 c1 e9 03 80 3c 01 00 0f 85 44 01 00 00 48 b9 00 00 00 00 00 fc ff df 48 8b 45 10 48 89 c6 48 c1 ee 03 \u003c80\u003e 3c 0e 00 0f 85 06 01 00 00 48 85 d2 4c 89 28 74 47 e8 a3 4f b5\n  RSP: 0018:ffffc90006a97bf8 EFLAGS: 00010246\n  RAX: 0000000000000000 RBX: ffff888050ffc4f8 RCX: dffffc0000000000\n  RDX: 0000000000000000 RSI: 0000000000000000 RDI: ffff88808e04e010\n  RBP: ffff88808e04e000 R08: 0000000000000001 R09: ffff8880543d0000\n  R10: ffffed100a87a000 R11: 000000000000016e R12: ffff8880543d0000\n  R13: ffff88808e04e008 R14: ffff888050ffc508 R15: ffff888050ffc500\n  FS:  0000000000000000(0000) GS:ffff8880ae600000(0000) knlGS:0000000000000000\n  CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033\n  CR2: 00000000f5505db0 CR3: 0000000097cf7000 CR4: 00000000001526f0\n  DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000\n  DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400\n  Call Trace:\n  wg_noise_handshake_begin_session+0x752/0xc9a drivers/net/wireguard/noise.c:820\n  wg_receive_handshake_packet drivers/net/wireguard/receive.c:183 [inline]\n  wg_packet_handshake_receive_worker+0x33b/0x730 drivers/net/wireguard/receive.c:220\n  process_one_work+0x94c/0x1670 kernel/workqueue.c:2269\n  worker_thread+0x64c/0x1120 kernel/workqueue.c:2415\n  kthread+0x3b5/0x4a0 kernel/kthread.c:292\n  ret_from_fork+0x1f/0x30 arch/x86/entry/entry_64.S:294\n  Modules linked in:\n  ---[ end trace 0d737db78b72da84 ]---\n  RIP: 0010:hlist_replace_rcu include/linux/rculist.h:505 [inline]\n  RIP: 0010:wg_index_hashtable_replace+0x176/0x330 drivers/net/wireguard/peerlookup.c:174\n  Code: 00 fc ff df 48 89 f9 48 c1 e9 03 80 3c 01 00 0f 85 44 01 00 00 48 b9 00 00 00 00 00 fc ff df 48 8b 45 10 48 89 c6 48 c1 ee 03 \u003c80\u003e 3c 0e 00 0f 85 06 01 00 00 48 85 d2 4c 89 28 74 47 e8 a3 4f b5\n  RSP: 0018:ffffc90006a97bf8 EFLAGS: 00010246\n  RAX: 0000000000000000 RBX: ffff888050ffc4f8 RCX: dffffc0000000000\n  RDX: 0000000000000000 RSI: 0000000000000000 RDI: ffff88808e04e010\n  RBP: ffff88808e04e000 R08: 0000000000000001 R09: ffff8880543d0000\n  R10: ffffed100a87a000 R11: 000000000000016e R12: ffff8880543d0000\n  R13: ffff88808e04e008 R14: ffff888050ffc508 R15: ffff888050ffc500\n  FS:  0000000000000000(0000) GS:ffff8880ae600000(0000) knlGS:0000000000000000\n  CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033\n  CR2: 00000000f5505db0 CR3: 0000000097cf7000 CR4: 00000000001526f0\n  DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000\n  DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400\n\nReported-by: Eric Dumazet \u003cedumazet@google.com\u003e\nSigned-off-by: Jason A. Donenfeld \u003cJason@zx2c4.com\u003e\n"
    },
    {
      "commit": "dace9d04b9ab94e07104ffa8435ec49af48f7e3f",
      "tree": "118e9d5300c61ebce34768080b8faf2ed9f56939",
      "parents": [
        "a28032f2d1251daa717143c239451678e9481266"
      ],
      "author": {
        "name": "Jason A. Donenfeld",
        "email": "Jason@zx2c4.com",
        "time": "Thu Aug 27 09:55:29 2020 +0200"
      },
      "committer": {
        "name": "Jason A. Donenfeld",
        "email": "Jason@zx2c4.com",
        "time": "Thu Aug 27 09:55:29 2020 +0200"
      },
      "message": "compat: backport NLA policy macros\n\nSigned-off-by: Jason A. Donenfeld \u003cJason@zx2c4.com\u003e\n"
    },
    {
      "commit": "a28032f2d1251daa717143c239451678e9481266",
      "tree": "92619fbdcb67f4d15a0d359468e4e75f402ad976",
      "parents": [
        "515d54436e0da46d5f3250f682ee265e65ab303e"
      ],
      "author": {
        "name": "Johannes Berg",
        "email": "johannes.berg@intel.com",
        "time": "Tue Aug 18 10:17:32 2020 +0200"
      },
      "committer": {
        "name": "Jason A. Donenfeld",
        "email": "Jason@zx2c4.com",
        "time": "Thu Aug 27 09:45:01 2020 +0200"
      },
      "message": "netlink: consistently use NLA_POLICY_MIN_LEN()\n\nChange places that open-code NLA_POLICY_MIN_LEN() to\nuse the macro instead, giving us flexibility in how we\nhandle the details of the macro.\n\nSigned-off-by: Johannes Berg \u003cjohannes.berg@intel.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\nSigned-off-by: Jason A. Donenfeld \u003cJason@zx2c4.com\u003e\n"
    },
    {
      "commit": "515d54436e0da46d5f3250f682ee265e65ab303e",
      "tree": "521e2e7d4bd090964e105c6e093a7798877165df",
      "parents": [
        "1a41e327bef444861324c2df86bd21f15aaf95c4"
      ],
      "author": {
        "name": "Johannes Berg",
        "email": "johannes.berg@intel.com",
        "time": "Tue Aug 18 10:17:31 2020 +0200"
      },
      "committer": {
        "name": "Jason A. Donenfeld",
        "email": "Jason@zx2c4.com",
        "time": "Thu Aug 27 09:45:01 2020 +0200"
      },
      "message": "netlink: consistently use NLA_POLICY_EXACT_LEN()\n\nChange places that open-code NLA_POLICY_EXACT_LEN() to\nuse the macro instead, giving us flexibility in how we\nhandle the details of the macro.\n\nSigned-off-by: Johannes Berg \u003cjohannes.berg@intel.com\u003e\nAcked-by: Matthieu Baerts \u003cmatthieu.baerts@tessares.net\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\nSigned-off-by: Jason A. Donenfeld \u003cJason@zx2c4.com\u003e\n"
    },
    {
      "commit": "1a41e327bef444861324c2df86bd21f15aaf95c4",
      "tree": "51e722eebcd505c2bfd407d7d17a4090a8386456",
      "parents": [
        "90a9e82ba613d39951c8b6fb66d149a06b5b2298"
      ],
      "author": {
        "name": "Jason A. Donenfeld",
        "email": "Jason@zx2c4.com",
        "time": "Thu Aug 27 09:36:16 2020 +0200"
      },
      "committer": {
        "name": "Jason A. Donenfeld",
        "email": "Jason@zx2c4.com",
        "time": "Thu Aug 27 09:36:16 2020 +0200"
      },
      "message": "compat: backport kfree_sensitive and switch to it\n\nSigned-off-by: Jason A. Donenfeld \u003cJason@zx2c4.com\u003e\n"
    },
    {
      "commit": "90a9e82ba613d39951c8b6fb66d149a06b5b2298",
      "tree": "330079c744b0b3f489a7079efa612e85ac13b106",
      "parents": [
        "a567b4c2910ca480bd6f642f30401ca9ccc50d4e"
      ],
      "author": {
        "name": "Jason A. Donenfeld",
        "email": "Jason@zx2c4.com",
        "time": "Sun Jul 12 22:00:10 2020 -0600"
      },
      "committer": {
        "name": "Jason A. Donenfeld",
        "email": "Jason@zx2c4.com",
        "time": "Wed Jul 29 10:14:52 2020 +0200"
      },
      "message": "compat: drop support for SUSE 15.1\n\nNow that WireGuard is properly supported by 15.2 and people have had\nsufficient time to upgrade, we can drop support for 15.1 in this compat\nmodule.\n\nSigned-off-by: Jason A. Donenfeld \u003cJason@zx2c4.com\u003e\n"
    },
    {
      "commit": "a567b4c2910ca480bd6f642f30401ca9ccc50d4e",
      "tree": "e926da084730890d4bc5857995774cbb186dfb5f",
      "parents": [
        "4213ef0109a388311763542b4b0cf77f1d01777e"
      ],
      "author": {
        "name": "Jason A. Donenfeld",
        "email": "Jason@zx2c4.com",
        "time": "Wed Jul 29 10:14:22 2020 +0200"
      },
      "committer": {
        "name": "Jason A. Donenfeld",
        "email": "Jason@zx2c4.com",
        "time": "Wed Jul 29 10:14:22 2020 +0200"
      },
      "message": "version: bump\n\nSigned-off-by: Jason A. Donenfeld \u003cJason@zx2c4.com\u003e\n"
    },
    {
      "commit": "4213ef0109a388311763542b4b0cf77f1d01777e",
      "tree": "e36ef5c87f0beb432e19864c73d7a17e58d76542",
      "parents": [
        "5a45add2b3d3318ad7aa6c06c3d3612bb0094479"
      ],
      "author": {
        "name": "Jason A. Donenfeld",
        "email": "Jason@zx2c4.com",
        "time": "Wed Jul 29 09:54:05 2020 +0200"
      },
      "committer": {
        "name": "Jason A. Donenfeld",
        "email": "Jason@zx2c4.com",
        "time": "Wed Jul 29 10:14:15 2020 +0200"
      },
      "message": "compat: add missing headers for ip_tunnel_parse_protocol\n\nSigned-off-by: Jason A. Donenfeld \u003cJason@zx2c4.com\u003e\n"
    },
    {
      "commit": "5a45add2b3d3318ad7aa6c06c3d3612bb0094479",
      "tree": "cd14296c35db4a9d32f290cd7fc09580a402a0b1",
      "parents": [
        "372427a6f97753d7c7a1027c5bd07ea3be520c1c"
      ],
      "author": {
        "name": "Jason A. Donenfeld",
        "email": "Jason@zx2c4.com",
        "time": "Tue Jul 28 22:29:12 2020 +0200"
      },
      "committer": {
        "name": "Jason A. Donenfeld",
        "email": "Jason@zx2c4.com",
        "time": "Wed Jul 29 10:14:15 2020 +0200"
      },
      "message": "compat: ipv6_dst_lookup_flow was ported to rhel 7.9 beta\n\nSigned-off-by: Jason A. Donenfeld \u003cJason@zx2c4.com\u003e\n"
    },
    {
      "commit": "372427a6f97753d7c7a1027c5bd07ea3be520c1c",
      "tree": "2d87e2ee9e6058099c54bc1730f578d3386692d0",
      "parents": [
        "f04dae170525ad46f7db2c5fcbb14f5369a6e125"
      ],
      "author": {
        "name": "Ricardo Mendoza",
        "email": "ricmm@pantacor.com",
        "time": "Wed Jul 22 13:40:51 2020 +0200"
      },
      "committer": {
        "name": "Jason A. Donenfeld",
        "email": "Jason@zx2c4.com",
        "time": "Wed Jul 29 10:14:15 2020 +0200"
      },
      "message": "compat: allow override of depmod basedir\n\nWhen building in an environment with a different modules install path\nwe need to be able to also override the depmod basedir flag.\n\nSigned-off-by: Ricardo Mendoza \u003cricmm@pantacor.com\u003e\n[zx2c4: changed name of env var and added quotes to argument]\nSigned-off-by: Jason A. Donenfeld \u003cJason@zx2c4.com\u003e\n"
    },
    {
      "commit": "f04dae170525ad46f7db2c5fcbb14f5369a6e125",
      "tree": "26b6fe5516dd890e527a9e92b327fc8f3000e3bb",
      "parents": [
        "d553aa7c52ac78c1963886afb74ba861b0b7b0fc"
      ],
      "author": {
        "name": "Jason A. Donenfeld",
        "email": "Jason@zx2c4.com",
        "time": "Thu Jul 16 01:46:42 2020 -0600"
      },
      "committer": {
        "name": "Jason A. Donenfeld",
        "email": "Jason@zx2c4.com",
        "time": "Wed Jul 29 10:14:15 2020 +0200"
      },
      "message": "compat: rhel 8.3 beta removed nf_nat_core.h\n\nReported-by: Vladimir Benes \u003cvbenes@redhat.com\u003e\nSigned-off-by: Jason A. Donenfeld \u003cJason@zx2c4.com\u003e\n"
    },
    {
      "commit": "d553aa7c52ac78c1963886afb74ba861b0b7b0fc",
      "tree": "b07b0adbbca8638387134c3c2bc5b55f475a659b",
      "parents": [
        "d9e60cad625e96a916b7950e9706f7fa3c563c60"
      ],
      "author": {
        "name": "Jason A. Donenfeld",
        "email": "Jason@zx2c4.com",
        "time": "Sun Jul 12 21:27:57 2020 -0600"
      },
      "committer": {
        "name": "Jason A. Donenfeld",
        "email": "Jason@zx2c4.com",
        "time": "Sun Jul 12 21:27:57 2020 -0600"
      },
      "message": "version: bump\n\nSigned-off-by: Jason A. Donenfeld \u003cJason@zx2c4.com\u003e\n"
    },
    {
      "commit": "d9e60cad625e96a916b7950e9706f7fa3c563c60",
      "tree": "8abc09e13efa87e95184a87285d5f897b5a6fb72",
      "parents": [
        "f4367ebaef9244fc777875be2c765cc03a1b5b72"
      ],
      "author": {
        "name": "Jason A. Donenfeld",
        "email": "Jason@zx2c4.com",
        "time": "Tue Jun 30 17:15:34 2020 -0600"
      },
      "committer": {
        "name": "Jason A. Donenfeld",
        "email": "Jason@zx2c4.com",
        "time": "Tue Jun 30 19:44:12 2020 -0600"
      },
      "message": "compat: backport ip_tunnel_parse_protocol and ip_tunnel_header_ops\n\nThese are required for moving wg_examine_packet_protocol out of\nwireguard and into upstream.\n\nSigned-off-by: Jason A. Donenfeld \u003cJason@zx2c4.com\u003e\n"
    },
    {
      "commit": "f4367ebaef9244fc777875be2c765cc03a1b5b72",
      "tree": "7a016e8585275d761e849b812fb6be5e53eb2aab",
      "parents": [
        "6af810721785ecae09a50ebf28d4c8234f67b163"
      ],
      "author": {
        "name": "Jason A. Donenfeld",
        "email": "Jason@zx2c4.com",
        "time": "Tue Jun 30 17:12:06 2020 -0600"
      },
      "committer": {
        "name": "Jason A. Donenfeld",
        "email": "Jason@zx2c4.com",
        "time": "Tue Jun 30 17:17:05 2020 -0600"
      },
      "message": "queueing: make use of ip_tunnel_parse_protocol\n\nNow that wg_examine_packet_protocol has been added for general\nconsumption as ip_tunnel_parse_protocol, it\u0027s possible to remove\nwg_examine_packet_protocol and simply use the new\nip_tunnel_parse_protocol function directly.\n\nSigned-off-by: Jason A. Donenfeld \u003cJason@zx2c4.com\u003e\n"
    },
    {
      "commit": "6af810721785ecae09a50ebf28d4c8234f67b163",
      "tree": "77ae65e396d4296d7cd827c9c48c652dd6d13740",
      "parents": [
        "ae2212da560cffe0daec1878fefde46a83906f24"
      ],
      "author": {
        "name": "Jason A. Donenfeld",
        "email": "Jason@zx2c4.com",
        "time": "Mon Jun 29 19:06:20 2020 -0600"
      },
      "committer": {
        "name": "Jason A. Donenfeld",
        "email": "Jason@zx2c4.com",
        "time": "Tue Jun 30 17:17:01 2020 -0600"
      },
      "message": "device: implement header_ops-\u003eparse_protocol for AF_PACKET\n\nWireGuard uses skb-\u003eprotocol to determine packet type, and bails out if\nit\u0027s not set or set to something it\u0027s not expecting. For AF_PACKET\ninjection, we need to support its call chain of:\n\n    packet_sendmsg -\u003e packet_snd -\u003e packet_parse_headers -\u003e\n      dev_parse_header_protocol -\u003e parse_protocol\n\nWithout a valid parse_protocol, this returns zero, and wireguard then\nrejects the skb. So, this wires up the ip_tunnel handler for layer 3\npackets for that case.\n\nReported-by: Hans Wippel \u003cndev@hwipl.net\u003e\nSigned-off-by: Jason A. Donenfeld \u003cJason@zx2c4.com\u003e\n"
    },
    {
      "commit": "ae2212da560cffe0daec1878fefde46a83906f24",
      "tree": "7ba5c9fa108278adccfe2da1e40a35d2a21900bb",
      "parents": [
        "7adc5ff9285ed79f255aafcde3bc5ae71005e013"
      ],
      "author": {
        "name": "Jason A. Donenfeld",
        "email": "Jason@zx2c4.com",
        "time": "Mon Jun 29 16:29:47 2020 -0600"
      },
      "committer": {
        "name": "Jason A. Donenfeld",
        "email": "Jason@zx2c4.com",
        "time": "Mon Jun 29 16:29:47 2020 -0600"
      },
      "message": "compat: SUSE 15.1 is the final SUSE we need to support\n\n\u003e\u003d15.2 is in SUSE\u0027s kernel now.\n\nSigned-off-by: Jason A. Donenfeld \u003cJason@zx2c4.com\u003e\n"
    },
    {
      "commit": "7adc5ff9285ed79f255aafcde3bc5ae71005e013",
      "tree": "a6d0339fb085e4003c4d2edb8ae36152534c588b",
      "parents": [
        "3917d7135cc605da3d607df089f16f9773aa67f9"
      ],
      "author": {
        "name": "Jason A. Donenfeld",
        "email": "Jason@zx2c4.com",
        "time": "Fri Jun 26 04:34:29 2020 -0600"
      },
      "committer": {
        "name": "Jason A. Donenfeld",
        "email": "Jason@zx2c4.com",
        "time": "Mon Jun 29 16:28:35 2020 -0600"
      },
      "message": "compat: rhel 8.3 backported skb_reset_redirect\n\nReported-by: Vladimir Benes \u003cvbenes@redhat.com\u003e\nSigned-off-by: Jason A. Donenfeld \u003cJason@zx2c4.com\u003e\n"
    },
    {
      "commit": "3917d7135cc605da3d607df089f16f9773aa67f9",
      "tree": "04ee1f9fb409729ecffe3315c8202d978ad38e82",
      "parents": [
        "2fbaef864227150ca9bbc78b57614c313c2dac9d"
      ],
      "author": {
        "name": "Jason A. Donenfeld",
        "email": "Jason@zx2c4.com",
        "time": "Wed Jun 24 16:06:03 2020 -0600"
      },
      "committer": {
        "name": "Jason A. Donenfeld",
        "email": "Jason@zx2c4.com",
        "time": "Mon Jun 29 16:28:35 2020 -0600"
      },
      "message": "receive: account for napi_gro_receive never returning GRO_DROP\n\nThe napi_gro_receive function no longer returns GRO_DROP ever, making\nhandling GRO_DROP dead code. This commit removes that dead code.\nFurther, it\u0027s not even clear that device drivers have any business in\ntaking action after passing off received packets; that\u0027s arguably out of\ntheir hands.\n\nSigned-off-by: Jason A. Donenfeld \u003cJason@zx2c4.com\u003e\n"
    },
    {
      "commit": "2fbaef864227150ca9bbc78b57614c313c2dac9d",
      "tree": "fbde7577e34fde70861ae6fb38c317a276b3d51a",
      "parents": [
        "4941d3b34b59dc39c23250425494f8dce19eedd0"
      ],
      "author": {
        "name": "Jason A. Donenfeld",
        "email": "Jason@zx2c4.com",
        "time": "Tue Jun 23 16:12:11 2020 -0600"
      },
      "committer": {
        "name": "Jason A. Donenfeld",
        "email": "Jason@zx2c4.com",
        "time": "Tue Jun 23 16:12:11 2020 -0600"
      },
      "message": "version: bump\n\nSigned-off-by: Jason A. Donenfeld \u003cJason@zx2c4.com\u003e\n"
    },
    {
      "commit": "4941d3b34b59dc39c23250425494f8dce19eedd0",
      "tree": "d3e5aeec0bd2bdd543ed446cbad569cf7ebed65d",
      "parents": [
        "b8fbf4f4803ca1b2fa181ca3d2555cdb61f6f374"
      ],
      "author": {
        "name": "Jason A. Donenfeld",
        "email": "Jason@zx2c4.com",
        "time": "Sun Jun 21 23:31:17 2020 -0600"
      },
      "committer": {
        "name": "Jason A. Donenfeld",
        "email": "Jason@zx2c4.com",
        "time": "Mon Jun 22 00:02:39 2020 -0600"
      },
      "message": "netns: workaround bad 5.2.y backport\n\nca7a03c4175 was backported to 5.2 to fix 7d9e5f422150, but 7d9e5f422150\nwasn\u0027t added until 5.3, so this fix for a reference underflow in 5.3\nbecomes a memory leak in 5.2.\n\nSigned-off-by: Jason A. Donenfeld \u003cJason@zx2c4.com\u003e\n"
    },
    {
      "commit": "b8fbf4f4803ca1b2fa181ca3d2555cdb61f6f374",
      "tree": "c4b486ce30f07613775b9bd743ab8d98c7e6cd41",
      "parents": [
        "c5e19b2939d490e23b0d0ab19cdef14442910ab7"
      ],
      "author": {
        "name": "Jason A. Donenfeld",
        "email": "Jason@zx2c4.com",
        "time": "Sun Jun 21 21:42:21 2020 -0600"
      },
      "committer": {
        "name": "Jason A. Donenfeld",
        "email": "Jason@zx2c4.com",
        "time": "Mon Jun 22 00:02:35 2020 -0600"
      },
      "message": "device: avoid circular netns references\n\nBefore, we took a reference to the creating netns if the new netns was\ndifferent. This caused issues with circular references, with two\nwireguard interfaces swapping namespaces. The solution is to rather not\ntake any extra references at all, but instead simply invalidate the\ncreating netns pointer when that netns is deleted.\n\nIn order to prevent this from happening again, this commit improves the\nrough object leak tracking by allowing it to account for created and\ndestroyed interfaces, aside from just peers and keys. That then makes it\npossible to check for the object leak when having two interfaces take a\nreference to each others\u0027 namespaces.\n\nSigned-off-by: Jason A. Donenfeld \u003cJason@zx2c4.com\u003e\n"
    },
    {
      "commit": "c5e19b2939d490e23b0d0ab19cdef14442910ab7",
      "tree": "835bb1034dade402df0f4dcd2441786811c9b6bc",
      "parents": [
        "178cdfffb99f2fd6fb4a5bfd2f9319461d93f53b"
      ],
      "author": {
        "name": "Frank Werner-Krippendorf",
        "email": "mail@hb9fxq.ch",
        "time": "Tue Jun 09 17:21:00 2020 +0200"
      },
      "committer": {
        "name": "Jason A. Donenfeld",
        "email": "Jason@zx2c4.com",
        "time": "Sun Jun 21 21:41:34 2020 -0600"
      },
      "message": "noise: do not assign initiation time in if condition\n\nFixes an error condition reported by checkpatch.pl which caused by\nassigning a variable in an if condition in wg_noise_handshake_consume_\ninitiation().\n\nSigned-off-by: Frank Werner-Krippendorf \u003cmail@hb9fxq.ch\u003e\nSigned-off-by: Jason A. Donenfeld \u003cJason@zx2c4.com\u003e\n"
    },
    {
      "commit": "178cdfffb99f2fd6fb4a5bfd2f9319461d93f53b",
      "tree": "b65009d1f7551b2964896be46d9b662cf57e72ce",
      "parents": [
        "1f4ad9270d25ae912790fe2e76183fc27d5d3dc8"
      ],
      "author": {
        "name": "Jason A. Donenfeld",
        "email": "Jason@zx2c4.com",
        "time": "Thu Jun 18 17:44:56 2020 -0600"
      },
      "committer": {
        "name": "Jason A. Donenfeld",
        "email": "Jason@zx2c4.com",
        "time": "Thu Jun 18 17:47:36 2020 -0600"
      },
      "message": "Kbuild: remove -fvisibility\u003dhidden from cflags\n\nThis was originally done in 2015 as a means of decreasing module size,\nbut it has the effect of creating JUMP11 relocations on ARM when\ncompiled in THUMB2 mode without CONFIG_THUMB2_AVOID_R_ARM_THM_JUMP11\u003dy,\nwhich results in `B ...` instructions being generated with jumps that\nare too far, rather than `B.W ...` instructions, which can handle the\nlarger sized jump.\n\nGet rid of the old hack, which had minimum utility anyway.\n\nSigned-off-by: Jason A. Donenfeld \u003cJason@zx2c4.com\u003e\n"
    },
    {
      "commit": "1f4ad9270d25ae912790fe2e76183fc27d5d3dc8",
      "tree": "3e3b6e70e0cf0d936b35959334a85fe7a171d656",
      "parents": [
        "dbfce70cece48c5a5292771226ecec9f60e081cf"
      ],
      "author": {
        "name": "Jason A. Donenfeld",
        "email": "Jason@zx2c4.com",
        "time": "Mon Jun 15 16:41:10 2020 -0600"
      },
      "committer": {
        "name": "Jason A. Donenfeld",
        "email": "Jason@zx2c4.com",
        "time": "Mon Jun 15 16:41:39 2020 -0600"
      },
      "message": "compat: drop centos 8.1 support as 8.2 is now out\n\nSigned-off-by: Jason A. Donenfeld \u003cJason@zx2c4.com\u003e\n"
    },
    {
      "commit": "dbfce70cece48c5a5292771226ecec9f60e081cf",
      "tree": "f65de8b526d02f2ab5166ca74128b38f68727f34",
      "parents": [
        "55385041a8cb74188be566e65d80bf9baecdd2e7"
      ],
      "author": {
        "name": "Jason A. Donenfeld",
        "email": "Jason@zx2c4.com",
        "time": "Thu Jun 11 02:17:19 2020 -0600"
      },
      "committer": {
        "name": "Jason A. Donenfeld",
        "email": "Jason@zx2c4.com",
        "time": "Thu Jun 11 02:17:19 2020 -0600"
      },
      "message": "version: bump\n\nSigned-off-by: Jason A. Donenfeld \u003cJason@zx2c4.com\u003e\n"
    },
    {
      "commit": "55385041a8cb74188be566e65d80bf9baecdd2e7",
      "tree": "11ddbe644480dc410cd2c520ab7a7a5100255629",
      "parents": [
        "96e82f21e1e5022b10bac855b5793370720f6359"
      ],
      "author": {
        "name": "Jason A. Donenfeld",
        "email": "Jason@zx2c4.com",
        "time": "Thu Jun 04 01:54:34 2020 -0600"
      },
      "committer": {
        "name": "Jason A. Donenfeld",
        "email": "Jason@zx2c4.com",
        "time": "Thu Jun 04 01:55:55 2020 -0600"
      },
      "message": "compat: remove stale suse support\n\nThe 42.x series is no longer supported, and the 15.2 kernel is getting\na proper backport, so at the moment, we only care about supporting 15.1.\nEventually we\u0027ll drop that too.\n\nSigned-off-by: Jason A. Donenfeld \u003cJason@zx2c4.com\u003e\n"
    },
    {
      "commit": "96e82f21e1e5022b10bac855b5793370720f6359",
      "tree": "8424564d35a077212f2fa7a81725dd45c7962058",
      "parents": [
        "b5e824a5a2da5aa179f03183ac501a154346348d"
      ],
      "author": {
        "name": "Jason A. Donenfeld",
        "email": "Jason@zx2c4.com",
        "time": "Thu May 28 00:58:36 2020 -0600"
      },
      "committer": {
        "name": "Jason A. Donenfeld",
        "email": "Jason@zx2c4.com",
        "time": "Thu May 28 03:04:41 2020 -0600"
      },
      "message": "compat: bionic-hwe-5.0/disco kernel backported skb_reset_redirect and ipv6 flow\n\nSigned-off-by: Jason A. Donenfeld \u003cJason@zx2c4.com\u003e\n"
    },
    {
      "commit": "b5e824a5a2da5aa179f03183ac501a154346348d",
      "tree": "150d6e7cfea84ca5f6f422c2af017835848d34b2",
      "parents": [
        "feb89cab65c6ab1a6cbeeaaeb11b1a174772cea8"
      ],
      "author": {
        "name": "Jason A. Donenfeld",
        "email": "Jason@zx2c4.com",
        "time": "Sat May 23 22:27:12 2020 -0600"
      },
      "committer": {
        "name": "Jason A. Donenfeld",
        "email": "Jason@zx2c4.com",
        "time": "Thu May 28 03:04:41 2020 -0600"
      },
      "message": "qemu: mark per_cpu_load_addr as static for gcc-10\n\nSigned-off-by: Jason A. Donenfeld \u003cJason@zx2c4.com\u003e\n"
    }
  ],
  "next": "feb89cab65c6ab1a6cbeeaaeb11b1a174772cea8"
}
