Hello community,

here is the log from the commit of package wireguard for openSUSE:Factory 
checked in at 2020-03-22 14:18:22
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/wireguard (Old)
 and      /work/SRC/openSUSE:Factory/.wireguard.new.3160 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "wireguard"

Sun Mar 22 14:18:22 2020 rev:13 rq:787156 version:0.0.20200318

Changes:
--------
--- /work/SRC/openSUSE:Factory/wireguard/wireguard.changes      2020-03-06 
21:27:59.737575898 +0100
+++ /work/SRC/openSUSE:Factory/.wireguard.new.3160/wireguard.changes    
2020-03-22 14:18:30.918108604 +0100
@@ -1,0 +2,13 @@
+Sat Mar 21 13:55:07 UTC 2020 - Martin Hauke <mar...@gmx.de>
+
+- Update to version 0.0.20200318
+  * compat: RHEL 7 backported skb_ensure_writable()
+  * compat: RHEL 8.2 backported ipv6_dst_lookup_flow
+  * curve25519-x86_64: avoid use of r12
+  * wireguard: queueing: account for skb->protocol==0
+  * receive: remove dead code from default packet type case
+  * noise: error out precomputed DH during handshake rather than
+    config
+  * send: use normaler alignment formula from upstream
+
+-------------------------------------------------------------------

Old:
----
  wireguard-linux-compat-0.0.20200215.tar.asc
  wireguard-linux-compat-0.0.20200215.tar.xz

New:
----
  wireguard-linux-compat-0.0.20200318.tar.asc
  wireguard-linux-compat-0.0.20200318.tar.xz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ wireguard.spec ++++++
--- /var/tmp/diff_new_pack.64q8hv/_old  2020-03-22 14:18:31.466108956 +0100
+++ /var/tmp/diff_new_pack.64q8hv/_new  2020-03-22 14:18:31.470108958 +0100
@@ -18,7 +18,7 @@
 
 
 Name:           wireguard
-Version:        0.0.20200215
+Version:        0.0.20200318
 Release:        0
 Summary:        Fast, modern, secure kernel VPN tunnel
 License:        GPL-2.0-only


++++++ wireguard-linux-compat-0.0.20200215.tar.xz -> 
wireguard-linux-compat-0.0.20200318.tar.xz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/wireguard-linux-compat-0.0.20200215/src/compat/compat.h 
new/wireguard-linux-compat-0.0.20200318/src/compat/compat.h
--- old/wireguard-linux-compat-0.0.20200215/src/compat/compat.h 2020-02-15 
00:01:31.000000000 +0100
+++ new/wireguard-linux-compat-0.0.20200318/src/compat/compat.h 2020-03-19 
06:15:25.000000000 +0100
@@ -870,7 +870,7 @@
 })
 #endif
 
-#if (LINUX_VERSION_CODE < KERNEL_VERSION(5, 4, 5) && LINUX_VERSION_CODE >= 
KERNEL_VERSION(5, 4, 0)) || LINUX_VERSION_CODE < KERNEL_VERSION(5, 3, 18)
+#if (LINUX_VERSION_CODE < KERNEL_VERSION(5, 4, 5) && LINUX_VERSION_CODE >= 
KERNEL_VERSION(5, 4, 0)) || (LINUX_VERSION_CODE < KERNEL_VERSION(5, 3, 18) && 
!defined(ISRHEL82))
 #define ipv6_dst_lookup_flow(a, b, c, d) ipv6_dst_lookup(a, b, &dst, c) + 
(void *)0 ?: dst
 #endif
 
@@ -932,7 +932,7 @@
 #define chacha20_neon zinc_chacha20_neon
 #endif
 
-#if LINUX_VERSION_CODE < KERNEL_VERSION(3, 19, 0)
+#if LINUX_VERSION_CODE < KERNEL_VERSION(3, 19, 0) && !defined(ISRHEL7)
 #include <linux/skbuff.h>
 static inline int skb_ensure_writable(struct sk_buff *skb, int write_len)
 {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/wireguard-linux-compat-0.0.20200215/src/crypto/zinc/curve25519/curve25519-x86_64.c
 
new/wireguard-linux-compat-0.0.20200318/src/crypto/zinc/curve25519/curve25519-x86_64.c
--- 
old/wireguard-linux-compat-0.0.20200215/src/crypto/zinc/curve25519/curve25519-x86_64.c
      2020-02-15 00:01:31.000000000 +0100
+++ 
new/wireguard-linux-compat-0.0.20200318/src/crypto/zinc/curve25519/curve25519-x86_64.c
      2020-03-19 06:15:25.000000000 +0100
@@ -156,28 +156,28 @@
                "  movq 0(%1), %%rdx;"
                "  mulxq 0(%3), %%r8, %%r9;"       "  xor %%r10, %%r10;"     "  
movq %%r8, 0(%0);"
                "  mulxq 8(%3), %%r10, %%r11;"     "  adox %%r9, %%r10;"     "  
movq %%r10, 8(%0);"
-               "  mulxq 16(%3), %%r12, %%r13;"    "  adox %%r11, %%r12;"
+               "  mulxq 16(%3), %%rbx, %%r13;"    "  adox %%r11, %%rbx;"
                "  mulxq 24(%3), %%r14, %%rdx;"    "  adox %%r13, %%r14;"    "  
mov $0, %%rax;"
                                                   "  adox %%rdx, %%rax;"
                /* Compute src1[1] * src2 */
                "  movq 8(%1), %%rdx;"
                "  mulxq 0(%3), %%r8, %%r9;"       "  xor %%r10, %%r10;"     "  
adcxq 8(%0), %%r8;"    "  movq %%r8, 8(%0);"
-               "  mulxq 8(%3), %%r10, %%r11;"     "  adox %%r9, %%r10;"     "  
adcx %%r12, %%r10;"    "  movq %%r10, 16(%0);"
-               "  mulxq 16(%3), %%r12, %%r13;"    "  adox %%r11, %%r12;"    "  
adcx %%r14, %%r12;"    "  mov $0, %%r8;"
+               "  mulxq 8(%3), %%r10, %%r11;"     "  adox %%r9, %%r10;"     "  
adcx %%rbx, %%r10;"    "  movq %%r10, 16(%0);"
+               "  mulxq 16(%3), %%rbx, %%r13;"    "  adox %%r11, %%rbx;"    "  
adcx %%r14, %%rbx;"    "  mov $0, %%r8;"
                "  mulxq 24(%3), %%r14, %%rdx;"    "  adox %%r13, %%r14;"    "  
adcx %%rax, %%r14;"    "  mov $0, %%rax;"
                                                   "  adox %%rdx, %%rax;"    "  
adcx %%r8, %%rax;"
                /* Compute src1[2] * src2 */
                "  movq 16(%1), %%rdx;"
                "  mulxq 0(%3), %%r8, %%r9;"       "  xor %%r10, %%r10;"    "  
adcxq 16(%0), %%r8;"    "  movq %%r8, 16(%0);"
-               "  mulxq 8(%3), %%r10, %%r11;"     "  adox %%r9, %%r10;"     "  
adcx %%r12, %%r10;"    "  movq %%r10, 24(%0);"
-               "  mulxq 16(%3), %%r12, %%r13;"    "  adox %%r11, %%r12;"    "  
adcx %%r14, %%r12;"    "  mov $0, %%r8;"
+               "  mulxq 8(%3), %%r10, %%r11;"     "  adox %%r9, %%r10;"     "  
adcx %%rbx, %%r10;"    "  movq %%r10, 24(%0);"
+               "  mulxq 16(%3), %%rbx, %%r13;"    "  adox %%r11, %%rbx;"    "  
adcx %%r14, %%rbx;"    "  mov $0, %%r8;"
                "  mulxq 24(%3), %%r14, %%rdx;"    "  adox %%r13, %%r14;"    "  
adcx %%rax, %%r14;"    "  mov $0, %%rax;"
                                                   "  adox %%rdx, %%rax;"    "  
adcx %%r8, %%rax;"
                /* Compute src1[3] * src2 */
                "  movq 24(%1), %%rdx;"
                "  mulxq 0(%3), %%r8, %%r9;"       "  xor %%r10, %%r10;"    "  
adcxq 24(%0), %%r8;"    "  movq %%r8, 24(%0);"
-               "  mulxq 8(%3), %%r10, %%r11;"     "  adox %%r9, %%r10;"     "  
adcx %%r12, %%r10;"    "  movq %%r10, 32(%0);"
-               "  mulxq 16(%3), %%r12, %%r13;"    "  adox %%r11, %%r12;"    "  
adcx %%r14, %%r12;"    "  movq %%r12, 40(%0);"    "  mov $0, %%r8;"
+               "  mulxq 8(%3), %%r10, %%r11;"     "  adox %%r9, %%r10;"     "  
adcx %%rbx, %%r10;"    "  movq %%r10, 32(%0);"
+               "  mulxq 16(%3), %%rbx, %%r13;"    "  adox %%r11, %%rbx;"    "  
adcx %%r14, %%rbx;"    "  movq %%rbx, 40(%0);"    "  mov $0, %%r8;"
                "  mulxq 24(%3), %%r14, %%rdx;"    "  adox %%r13, %%r14;"    "  
adcx %%rax, %%r14;"    "  movq %%r14, 48(%0);"    "  mov $0, %%rax;"
                                                   "  adox %%rdx, %%rax;"    "  
adcx %%r8, %%rax;"     "  movq %%rax, 56(%0);"
                /* Line up pointers */
@@ -191,11 +191,11 @@
                "  mulxq 32(%1), %%r8, %%r13;"
                "  xor %3, %3;"
                "  adoxq 0(%1), %%r8;"
-               "  mulxq 40(%1), %%r9, %%r12;"
+               "  mulxq 40(%1), %%r9, %%rbx;"
                "  adcx %%r13, %%r9;"
                "  adoxq 8(%1), %%r9;"
                "  mulxq 48(%1), %%r10, %%r13;"
-               "  adcx %%r12, %%r10;"
+               "  adcx %%rbx, %%r10;"
                "  adoxq 16(%1), %%r10;"
                "  mulxq 56(%1), %%r11, %%rax;"
                "  adcx %%r13, %%r11;"
@@ -220,7 +220,7 @@
                "  movq %%r8, 0(%0);"
        : "+&r" (tmp), "+&r" (f1), "+&r" (out), "+&r" (f2)
        :
-       : "%rax", "%rdx", "%r8", "%r9", "%r10", "%r11", "%r12", "%r13", "%r14", 
"memory", "cc"
+       : "%rax", "%rdx", "%r8", "%r9", "%r10", "%r11", "%rbx", "%r13", "%r14", 
"memory", "cc"
        );
 }
 
@@ -237,28 +237,28 @@
                "  movq 0(%1), %%rdx;"
                "  mulxq 0(%3), %%r8, %%r9;"       "  xor %%r10, %%r10;"     "  
movq %%r8, 0(%0);"
                "  mulxq 8(%3), %%r10, %%r11;"     "  adox %%r9, %%r10;"     "  
movq %%r10, 8(%0);"
-               "  mulxq 16(%3), %%r12, %%r13;"    "  adox %%r11, %%r12;"
+               "  mulxq 16(%3), %%rbx, %%r13;"    "  adox %%r11, %%rbx;"
                "  mulxq 24(%3), %%r14, %%rdx;"    "  adox %%r13, %%r14;"    "  
mov $0, %%rax;"
                                                   "  adox %%rdx, %%rax;"
                /* Compute src1[1] * src2 */
                "  movq 8(%1), %%rdx;"
                "  mulxq 0(%3), %%r8, %%r9;"       "  xor %%r10, %%r10;"     "  
adcxq 8(%0), %%r8;"    "  movq %%r8, 8(%0);"
-               "  mulxq 8(%3), %%r10, %%r11;"     "  adox %%r9, %%r10;"     "  
adcx %%r12, %%r10;"    "  movq %%r10, 16(%0);"
-               "  mulxq 16(%3), %%r12, %%r13;"    "  adox %%r11, %%r12;"    "  
adcx %%r14, %%r12;"    "  mov $0, %%r8;"
+               "  mulxq 8(%3), %%r10, %%r11;"     "  adox %%r9, %%r10;"     "  
adcx %%rbx, %%r10;"    "  movq %%r10, 16(%0);"
+               "  mulxq 16(%3), %%rbx, %%r13;"    "  adox %%r11, %%rbx;"    "  
adcx %%r14, %%rbx;"    "  mov $0, %%r8;"
                "  mulxq 24(%3), %%r14, %%rdx;"    "  adox %%r13, %%r14;"    "  
adcx %%rax, %%r14;"    "  mov $0, %%rax;"
                                                   "  adox %%rdx, %%rax;"    "  
adcx %%r8, %%rax;"
                /* Compute src1[2] * src2 */
                "  movq 16(%1), %%rdx;"
                "  mulxq 0(%3), %%r8, %%r9;"       "  xor %%r10, %%r10;"    "  
adcxq 16(%0), %%r8;"    "  movq %%r8, 16(%0);"
-               "  mulxq 8(%3), %%r10, %%r11;"     "  adox %%r9, %%r10;"     "  
adcx %%r12, %%r10;"    "  movq %%r10, 24(%0);"
-               "  mulxq 16(%3), %%r12, %%r13;"    "  adox %%r11, %%r12;"    "  
adcx %%r14, %%r12;"    "  mov $0, %%r8;"
+               "  mulxq 8(%3), %%r10, %%r11;"     "  adox %%r9, %%r10;"     "  
adcx %%rbx, %%r10;"    "  movq %%r10, 24(%0);"
+               "  mulxq 16(%3), %%rbx, %%r13;"    "  adox %%r11, %%rbx;"    "  
adcx %%r14, %%rbx;"    "  mov $0, %%r8;"
                "  mulxq 24(%3), %%r14, %%rdx;"    "  adox %%r13, %%r14;"    "  
adcx %%rax, %%r14;"    "  mov $0, %%rax;"
                                                   "  adox %%rdx, %%rax;"    "  
adcx %%r8, %%rax;"
                /* Compute src1[3] * src2 */
                "  movq 24(%1), %%rdx;"
                "  mulxq 0(%3), %%r8, %%r9;"       "  xor %%r10, %%r10;"    "  
adcxq 24(%0), %%r8;"    "  movq %%r8, 24(%0);"
-               "  mulxq 8(%3), %%r10, %%r11;"     "  adox %%r9, %%r10;"     "  
adcx %%r12, %%r10;"    "  movq %%r10, 32(%0);"
-               "  mulxq 16(%3), %%r12, %%r13;"    "  adox %%r11, %%r12;"    "  
adcx %%r14, %%r12;"    "  movq %%r12, 40(%0);"    "  mov $0, %%r8;"
+               "  mulxq 8(%3), %%r10, %%r11;"     "  adox %%r9, %%r10;"     "  
adcx %%rbx, %%r10;"    "  movq %%r10, 32(%0);"
+               "  mulxq 16(%3), %%rbx, %%r13;"    "  adox %%r11, %%rbx;"    "  
adcx %%r14, %%rbx;"    "  movq %%rbx, 40(%0);"    "  mov $0, %%r8;"
                "  mulxq 24(%3), %%r14, %%rdx;"    "  adox %%r13, %%r14;"    "  
adcx %%rax, %%r14;"    "  movq %%r14, 48(%0);"    "  mov $0, %%rax;"
                                                   "  adox %%rdx, %%rax;"    "  
adcx %%r8, %%rax;"     "  movq %%rax, 56(%0);"
 
@@ -268,28 +268,28 @@
                "  movq 32(%1), %%rdx;"
                "  mulxq 32(%3), %%r8, %%r9;"       "  xor %%r10, %%r10;"     " 
 movq %%r8, 64(%0);"
                "  mulxq 40(%3), %%r10, %%r11;"     "  adox %%r9, %%r10;"     " 
 movq %%r10, 72(%0);"
-               "  mulxq 48(%3), %%r12, %%r13;"    "  adox %%r11, %%r12;"
+               "  mulxq 48(%3), %%rbx, %%r13;"    "  adox %%r11, %%rbx;"
                "  mulxq 56(%3), %%r14, %%rdx;"    "  adox %%r13, %%r14;"    "  
mov $0, %%rax;"
                                                   "  adox %%rdx, %%rax;"
                /* Compute src1[1] * src2 */
                "  movq 40(%1), %%rdx;"
                "  mulxq 32(%3), %%r8, %%r9;"       "  xor %%r10, %%r10;"     " 
 adcxq 72(%0), %%r8;"    "  movq %%r8, 72(%0);"
-               "  mulxq 40(%3), %%r10, %%r11;"     "  adox %%r9, %%r10;"     " 
 adcx %%r12, %%r10;"    "  movq %%r10, 80(%0);"
-               "  mulxq 48(%3), %%r12, %%r13;"    "  adox %%r11, %%r12;"    "  
adcx %%r14, %%r12;"    "  mov $0, %%r8;"
+               "  mulxq 40(%3), %%r10, %%r11;"     "  adox %%r9, %%r10;"     " 
 adcx %%rbx, %%r10;"    "  movq %%r10, 80(%0);"
+               "  mulxq 48(%3), %%rbx, %%r13;"    "  adox %%r11, %%rbx;"    "  
adcx %%r14, %%rbx;"    "  mov $0, %%r8;"
                "  mulxq 56(%3), %%r14, %%rdx;"    "  adox %%r13, %%r14;"    "  
adcx %%rax, %%r14;"    "  mov $0, %%rax;"
                                                   "  adox %%rdx, %%rax;"    "  
adcx %%r8, %%rax;"
                /* Compute src1[2] * src2 */
                "  movq 48(%1), %%rdx;"
                "  mulxq 32(%3), %%r8, %%r9;"       "  xor %%r10, %%r10;"    "  
adcxq 80(%0), %%r8;"    "  movq %%r8, 80(%0);"
-               "  mulxq 40(%3), %%r10, %%r11;"     "  adox %%r9, %%r10;"     " 
 adcx %%r12, %%r10;"    "  movq %%r10, 88(%0);"
-               "  mulxq 48(%3), %%r12, %%r13;"    "  adox %%r11, %%r12;"    "  
adcx %%r14, %%r12;"    "  mov $0, %%r8;"
+               "  mulxq 40(%3), %%r10, %%r11;"     "  adox %%r9, %%r10;"     " 
 adcx %%rbx, %%r10;"    "  movq %%r10, 88(%0);"
+               "  mulxq 48(%3), %%rbx, %%r13;"    "  adox %%r11, %%rbx;"    "  
adcx %%r14, %%rbx;"    "  mov $0, %%r8;"
                "  mulxq 56(%3), %%r14, %%rdx;"    "  adox %%r13, %%r14;"    "  
adcx %%rax, %%r14;"    "  mov $0, %%rax;"
                                                   "  adox %%rdx, %%rax;"    "  
adcx %%r8, %%rax;"
                /* Compute src1[3] * src2 */
                "  movq 56(%1), %%rdx;"
                "  mulxq 32(%3), %%r8, %%r9;"       "  xor %%r10, %%r10;"    "  
adcxq 88(%0), %%r8;"    "  movq %%r8, 88(%0);"
-               "  mulxq 40(%3), %%r10, %%r11;"     "  adox %%r9, %%r10;"     " 
 adcx %%r12, %%r10;"    "  movq %%r10, 96(%0);"
-               "  mulxq 48(%3), %%r12, %%r13;"    "  adox %%r11, %%r12;"    "  
adcx %%r14, %%r12;"    "  movq %%r12, 104(%0);"    "  mov $0, %%r8;"
+               "  mulxq 40(%3), %%r10, %%r11;"     "  adox %%r9, %%r10;"     " 
 adcx %%rbx, %%r10;"    "  movq %%r10, 96(%0);"
+               "  mulxq 48(%3), %%rbx, %%r13;"    "  adox %%r11, %%rbx;"    "  
adcx %%r14, %%rbx;"    "  movq %%rbx, 104(%0);"    "  mov $0, %%r8;"
                "  mulxq 56(%3), %%r14, %%rdx;"    "  adox %%r13, %%r14;"    "  
adcx %%rax, %%r14;"    "  movq %%r14, 112(%0);"    "  mov $0, %%rax;"
                                                   "  adox %%rdx, %%rax;"    "  
adcx %%r8, %%rax;"     "  movq %%rax, 120(%0);"
                /* Line up pointers */
@@ -303,11 +303,11 @@
                "  mulxq 32(%1), %%r8, %%r13;"
                "  xor %3, %3;"
                "  adoxq 0(%1), %%r8;"
-               "  mulxq 40(%1), %%r9, %%r12;"
+               "  mulxq 40(%1), %%r9, %%rbx;"
                "  adcx %%r13, %%r9;"
                "  adoxq 8(%1), %%r9;"
                "  mulxq 48(%1), %%r10, %%r13;"
-               "  adcx %%r12, %%r10;"
+               "  adcx %%rbx, %%r10;"
                "  adoxq 16(%1), %%r10;"
                "  mulxq 56(%1), %%r11, %%rax;"
                "  adcx %%r13, %%r11;"
@@ -336,11 +336,11 @@
                "  mulxq 96(%1), %%r8, %%r13;"
                "  xor %3, %3;"
                "  adoxq 64(%1), %%r8;"
-               "  mulxq 104(%1), %%r9, %%r12;"
+               "  mulxq 104(%1), %%r9, %%rbx;"
                "  adcx %%r13, %%r9;"
                "  adoxq 72(%1), %%r9;"
                "  mulxq 112(%1), %%r10, %%r13;"
-               "  adcx %%r12, %%r10;"
+               "  adcx %%rbx, %%r10;"
                "  adoxq 80(%1), %%r10;"
                "  mulxq 120(%1), %%r11, %%rax;"
                "  adcx %%r13, %%r11;"
@@ -365,7 +365,7 @@
                "  movq %%r8, 32(%0);"
        : "+&r" (tmp), "+&r" (f1), "+&r" (out), "+&r" (f2)
        :
-       : "%rax", "%rdx", "%r8", "%r9", "%r10", "%r11", "%r12", "%r13", "%r14", 
"memory", "cc"
+       : "%rax", "%rdx", "%r8", "%r9", "%r10", "%r11", "%rbx", "%r13", "%r14", 
"memory", "cc"
        );
 }
 
@@ -377,11 +377,11 @@
        asm volatile(
                /* Compute the raw multiplication of f1*f2 */
                "  mulxq 0(%2), %%r8, %%rcx;"      /* f1[0]*f2 */
-               "  mulxq 8(%2), %%r9, %%r12;"      /* f1[1]*f2 */
+               "  mulxq 8(%2), %%r9, %%rbx;"      /* f1[1]*f2 */
                "  add %%rcx, %%r9;"
                "  mov $0, %%rcx;"
                "  mulxq 16(%2), %%r10, %%r13;"    /* f1[2]*f2 */
-               "  adcx %%r12, %%r10;"
+               "  adcx %%rbx, %%r10;"
                "  mulxq 24(%2), %%r11, %%rax;"    /* f1[3]*f2 */
                "  adcx %%r13, %%r11;"
                "  adcx %%rcx, %%rax;"
@@ -408,7 +408,7 @@
                "  movq %%r8, 0(%1);"
        : "+&r" (f2_r)
        : "r" (out), "r" (f1)
-       : "%rax", "%rcx", "%r8", "%r9", "%r10", "%r11", "%r12", "%r13", 
"memory", "cc"
+       : "%rax", "%rcx", "%r8", "%r9", "%r10", "%r11", "%rbx", "%r13", 
"memory", "cc"
        );
 }
 
@@ -509,8 +509,8 @@
                "  mulxq 16(%1), %%r9, %%r10;"     "  adcx %%r14, %%r9;"     /* 
f[2]*f[0] */
                "  mulxq 24(%1), %%rax, %%rcx;"    "  adcx %%rax, %%r10;"    /* 
f[3]*f[0] */
                "  movq 24(%1), %%rdx;"                                      /* 
f[3] */
-               "  mulxq 8(%1), %%r11, %%r12;"     "  adcx %%rcx, %%r11;"    /* 
f[1]*f[3] */
-               "  mulxq 16(%1), %%rax, %%r13;"    "  adcx %%rax, %%r12;"    /* 
f[2]*f[3] */
+               "  mulxq 8(%1), %%r11, %%rbx;"     "  adcx %%rcx, %%r11;"    /* 
f[1]*f[3] */
+               "  mulxq 16(%1), %%rax, %%r13;"    "  adcx %%rax, %%rbx;"    /* 
f[2]*f[3] */
                "  movq 8(%1), %%rdx;"             "  adcx %%r15, %%r13;"    /* 
f1 */
                "  mulxq 16(%1), %%rax, %%rcx;"    "  mov $0, %%r14;"        /* 
f[2]*f[1] */
 
@@ -520,12 +520,12 @@
                "  adcx %%r8, %%r8;"
                "  adox %%rcx, %%r11;"
                "  adcx %%r9, %%r9;"
-               "  adox %%r15, %%r12;"
+               "  adox %%r15, %%rbx;"
                "  adcx %%r10, %%r10;"
                "  adox %%r15, %%r13;"
                "  adcx %%r11, %%r11;"
                "  adox %%r15, %%r14;"
-               "  adcx %%r12, %%r12;"
+               "  adcx %%rbx, %%rbx;"
                "  adcx %%r13, %%r13;"
                "  adcx %%r14, %%r14;"
 
@@ -538,7 +538,7 @@
                "  adcx %%rcx, %%r10;"     "  movq %%r10, 24(%0);"
                "  movq 16(%1), %%rdx;"    "  mulx %%rdx, %%rax, %%rcx;"    /* 
f[2]^2 */
                "  adcx %%rax, %%r11;"     "  movq %%r11, 32(%0);"
-               "  adcx %%rcx, %%r12;"     "  movq %%r12, 40(%0);"
+               "  adcx %%rcx, %%rbx;"     "  movq %%rbx, 40(%0);"
                "  movq 24(%1), %%rdx;"    "  mulx %%rdx, %%rax, %%rcx;"    /* 
f[3]^2 */
                "  adcx %%rax, %%r13;"     "  movq %%r13, 48(%0);"
                "  adcx %%rcx, %%r14;"     "  movq %%r14, 56(%0);"
@@ -554,11 +554,11 @@
                "  mulxq 32(%1), %%r8, %%r13;"
                "  xor %%rcx, %%rcx;"
                "  adoxq 0(%1), %%r8;"
-               "  mulxq 40(%1), %%r9, %%r12;"
+               "  mulxq 40(%1), %%r9, %%rbx;"
                "  adcx %%r13, %%r9;"
                "  adoxq 8(%1), %%r9;"
                "  mulxq 48(%1), %%r10, %%r13;"
-               "  adcx %%r12, %%r10;"
+               "  adcx %%rbx, %%r10;"
                "  adoxq 16(%1), %%r10;"
                "  mulxq 56(%1), %%r11, %%rax;"
                "  adcx %%r13, %%r11;"
@@ -583,7 +583,7 @@
                "  movq %%r8, 0(%0);"
        : "+&r" (tmp), "+&r" (f), "+&r" (out)
        :
-       : "%rax", "%rcx", "%rdx", "%r8", "%r9", "%r10", "%r11", "%r12", "%r13", 
"%r14", "%r15", "memory", "cc"
+       : "%rax", "%rcx", "%rdx", "%r8", "%r9", "%r10", "%r11", "%rbx", "%r13", 
"%r14", "%r15", "memory", "cc"
        );
 }
 
@@ -600,8 +600,8 @@
                "  mulxq 16(%1), %%r9, %%r10;"     "  adcx %%r14, %%r9;"     /* 
f[2]*f[0] */
                "  mulxq 24(%1), %%rax, %%rcx;"    "  adcx %%rax, %%r10;"    /* 
f[3]*f[0] */
                "  movq 24(%1), %%rdx;"                                      /* 
f[3] */
-               "  mulxq 8(%1), %%r11, %%r12;"     "  adcx %%rcx, %%r11;"    /* 
f[1]*f[3] */
-               "  mulxq 16(%1), %%rax, %%r13;"    "  adcx %%rax, %%r12;"    /* 
f[2]*f[3] */
+               "  mulxq 8(%1), %%r11, %%rbx;"     "  adcx %%rcx, %%r11;"    /* 
f[1]*f[3] */
+               "  mulxq 16(%1), %%rax, %%r13;"    "  adcx %%rax, %%rbx;"    /* 
f[2]*f[3] */
                "  movq 8(%1), %%rdx;"             "  adcx %%r15, %%r13;"    /* 
f1 */
                "  mulxq 16(%1), %%rax, %%rcx;"    "  mov $0, %%r14;"        /* 
f[2]*f[1] */
 
@@ -611,12 +611,12 @@
                "  adcx %%r8, %%r8;"
                "  adox %%rcx, %%r11;"
                "  adcx %%r9, %%r9;"
-               "  adox %%r15, %%r12;"
+               "  adox %%r15, %%rbx;"
                "  adcx %%r10, %%r10;"
                "  adox %%r15, %%r13;"
                "  adcx %%r11, %%r11;"
                "  adox %%r15, %%r14;"
-               "  adcx %%r12, %%r12;"
+               "  adcx %%rbx, %%rbx;"
                "  adcx %%r13, %%r13;"
                "  adcx %%r14, %%r14;"
 
@@ -629,7 +629,7 @@
                "  adcx %%rcx, %%r10;"     "  movq %%r10, 24(%0);"
                "  movq 16(%1), %%rdx;"    "  mulx %%rdx, %%rax, %%rcx;"    /* 
f[2]^2 */
                "  adcx %%rax, %%r11;"     "  movq %%r11, 32(%0);"
-               "  adcx %%rcx, %%r12;"     "  movq %%r12, 40(%0);"
+               "  adcx %%rcx, %%rbx;"     "  movq %%rbx, 40(%0);"
                "  movq 24(%1), %%rdx;"    "  mulx %%rdx, %%rax, %%rcx;"    /* 
f[3]^2 */
                "  adcx %%rax, %%r13;"     "  movq %%r13, 48(%0);"
                "  adcx %%rcx, %%r14;"     "  movq %%r14, 56(%0);"
@@ -640,8 +640,8 @@
                "  mulxq 48(%1), %%r9, %%r10;"     "  adcx %%r14, %%r9;"     /* 
f[2]*f[0] */
                "  mulxq 56(%1), %%rax, %%rcx;"    "  adcx %%rax, %%r10;"    /* 
f[3]*f[0] */
                "  movq 56(%1), %%rdx;"                                      /* 
f[3] */
-               "  mulxq 40(%1), %%r11, %%r12;"     "  adcx %%rcx, %%r11;"    
/* f[1]*f[3] */
-               "  mulxq 48(%1), %%rax, %%r13;"    "  adcx %%rax, %%r12;"    /* 
f[2]*f[3] */
+               "  mulxq 40(%1), %%r11, %%rbx;"     "  adcx %%rcx, %%r11;"    
/* f[1]*f[3] */
+               "  mulxq 48(%1), %%rax, %%r13;"    "  adcx %%rax, %%rbx;"    /* 
f[2]*f[3] */
                "  movq 40(%1), %%rdx;"             "  adcx %%r15, %%r13;"    
/* f1 */
                "  mulxq 48(%1), %%rax, %%rcx;"    "  mov $0, %%r14;"        /* 
f[2]*f[1] */
 
@@ -651,12 +651,12 @@
                "  adcx %%r8, %%r8;"
                "  adox %%rcx, %%r11;"
                "  adcx %%r9, %%r9;"
-               "  adox %%r15, %%r12;"
+               "  adox %%r15, %%rbx;"
                "  adcx %%r10, %%r10;"
                "  adox %%r15, %%r13;"
                "  adcx %%r11, %%r11;"
                "  adox %%r15, %%r14;"
-               "  adcx %%r12, %%r12;"
+               "  adcx %%rbx, %%rbx;"
                "  adcx %%r13, %%r13;"
                "  adcx %%r14, %%r14;"
 
@@ -669,7 +669,7 @@
                "  adcx %%rcx, %%r10;"     "  movq %%r10, 88(%0);"
                "  movq 48(%1), %%rdx;"    "  mulx %%rdx, %%rax, %%rcx;"    /* 
f[2]^2 */
                "  adcx %%rax, %%r11;"     "  movq %%r11, 96(%0);"
-               "  adcx %%rcx, %%r12;"     "  movq %%r12, 104(%0);"
+               "  adcx %%rcx, %%rbx;"     "  movq %%rbx, 104(%0);"
                "  movq 56(%1), %%rdx;"    "  mulx %%rdx, %%rax, %%rcx;"    /* 
f[3]^2 */
                "  adcx %%rax, %%r13;"     "  movq %%r13, 112(%0);"
                "  adcx %%rcx, %%r14;"     "  movq %%r14, 120(%0);"
@@ -683,11 +683,11 @@
                "  mulxq 32(%1), %%r8, %%r13;"
                "  xor %%rcx, %%rcx;"
                "  adoxq 0(%1), %%r8;"
-               "  mulxq 40(%1), %%r9, %%r12;"
+               "  mulxq 40(%1), %%r9, %%rbx;"
                "  adcx %%r13, %%r9;"
                "  adoxq 8(%1), %%r9;"
                "  mulxq 48(%1), %%r10, %%r13;"
-               "  adcx %%r12, %%r10;"
+               "  adcx %%rbx, %%r10;"
                "  adoxq 16(%1), %%r10;"
                "  mulxq 56(%1), %%r11, %%rax;"
                "  adcx %%r13, %%r11;"
@@ -716,11 +716,11 @@
                "  mulxq 96(%1), %%r8, %%r13;"
                "  xor %%rcx, %%rcx;"
                "  adoxq 64(%1), %%r8;"
-               "  mulxq 104(%1), %%r9, %%r12;"
+               "  mulxq 104(%1), %%r9, %%rbx;"
                "  adcx %%r13, %%r9;"
                "  adoxq 72(%1), %%r9;"
                "  mulxq 112(%1), %%r10, %%r13;"
-               "  adcx %%r12, %%r10;"
+               "  adcx %%rbx, %%r10;"
                "  adoxq 80(%1), %%r10;"
                "  mulxq 120(%1), %%r11, %%rax;"
                "  adcx %%r13, %%r11;"
@@ -745,7 +745,7 @@
                "  movq %%r8, 32(%0);"
        : "+&r" (tmp), "+&r" (f), "+&r" (out)
        :
-       : "%rax", "%rcx", "%rdx", "%r8", "%r9", "%r10", "%r11", "%r12", "%r13", 
"%r14", "%r15", "memory", "cc"
+       : "%rax", "%rcx", "%rdx", "%r8", "%r9", "%r10", "%r11", "%rbx", "%r13", 
"%r14", "%r15", "memory", "cc"
        );
 }
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/wireguard-linux-compat-0.0.20200215/src/device.c 
new/wireguard-linux-compat-0.0.20200318/src/device.c
--- old/wireguard-linux-compat-0.0.20200215/src/device.c        2020-02-15 
00:01:31.000000000 +0100
+++ new/wireguard-linux-compat-0.0.20200318/src/device.c        2020-03-19 
06:15:25.000000000 +0100
@@ -130,7 +130,7 @@
        u32 mtu;
        int ret;
 
-       if (unlikely(wg_skb_examine_untrusted_ip_hdr(skb) != skb->protocol)) {
+       if (unlikely(!wg_check_packet_protocol(skb))) {
                ret = -EPROTONOSUPPORT;
                net_dbg_ratelimited("%s: Invalid IP packet\n", dev->name);
                goto err;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/wireguard-linux-compat-0.0.20200215/src/dkms.conf 
new/wireguard-linux-compat-0.0.20200318/src/dkms.conf
--- old/wireguard-linux-compat-0.0.20200215/src/dkms.conf       2020-02-15 
00:01:31.000000000 +0100
+++ new/wireguard-linux-compat-0.0.20200318/src/dkms.conf       2020-03-19 
06:15:25.000000000 +0100
@@ -1,5 +1,5 @@
 PACKAGE_NAME="wireguard"
-PACKAGE_VERSION="0.0.20200215"
+PACKAGE_VERSION="0.0.20200318"
 AUTOINSTALL=yes
 
 BUILT_MODULE_NAME="wireguard"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/wireguard-linux-compat-0.0.20200215/src/netlink.c 
new/wireguard-linux-compat-0.0.20200318/src/netlink.c
--- old/wireguard-linux-compat-0.0.20200215/src/netlink.c       2020-02-15 
00:01:31.000000000 +0100
+++ new/wireguard-linux-compat-0.0.20200318/src/netlink.c       2020-03-19 
06:15:25.000000000 +0100
@@ -409,11 +409,7 @@
 
                peer = wg_peer_create(wg, public_key, preshared_key);
                if (IS_ERR(peer)) {
-                       /* Similar to the above, if the key is invalid, we skip
-                        * it without fanfare, so that services don't need to
-                        * worry about doing key validation themselves.
-                        */
-                       ret = PTR_ERR(peer) == -EKEYREJECTED ? 0 : 
PTR_ERR(peer);
+                       ret = PTR_ERR(peer);
                        peer = NULL;
                        goto out;
                }
@@ -567,7 +563,7 @@
                                                         private_key);
                list_for_each_entry_safe(peer, temp, &wg->peer_list,
                                         peer_list) {
-                       BUG_ON(!wg_noise_precompute_static_static(peer));
+                       wg_noise_precompute_static_static(peer);
                        wg_noise_expire_current_peer_keypairs(peer);
                }
                wg_cookie_checker_precompute_device_keys(&wg->cookie_checker);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/wireguard-linux-compat-0.0.20200215/src/noise.c 
new/wireguard-linux-compat-0.0.20200318/src/noise.c
--- old/wireguard-linux-compat-0.0.20200215/src/noise.c 2020-02-15 
00:01:31.000000000 +0100
+++ new/wireguard-linux-compat-0.0.20200318/src/noise.c 2020-03-19 
06:15:25.000000000 +0100
@@ -44,32 +44,23 @@
 }
 
 /* Must hold peer->handshake.static_identity->lock */
-bool wg_noise_precompute_static_static(struct wg_peer *peer)
+void wg_noise_precompute_static_static(struct wg_peer *peer)
 {
-       bool ret;
-
        down_write(&peer->handshake.lock);
-       if (peer->handshake.static_identity->has_identity) {
-               ret = curve25519(
-                       peer->handshake.precomputed_static_static,
+       if (!peer->handshake.static_identity->has_identity ||
+           !curve25519(peer->handshake.precomputed_static_static,
                        peer->handshake.static_identity->static_private,
-                       peer->handshake.remote_static);
-       } else {
-               u8 empty[NOISE_PUBLIC_KEY_LEN] = { 0 };
-
-               ret = curve25519(empty, empty, peer->handshake.remote_static);
+                       peer->handshake.remote_static))
                memset(peer->handshake.precomputed_static_static, 0,
                       NOISE_PUBLIC_KEY_LEN);
-       }
        up_write(&peer->handshake.lock);
-       return ret;
 }
 
-bool wg_noise_handshake_init(struct noise_handshake *handshake,
-                          struct noise_static_identity *static_identity,
-                          const u8 peer_public_key[NOISE_PUBLIC_KEY_LEN],
-                          const u8 peer_preshared_key[NOISE_SYMMETRIC_KEY_LEN],
-                          struct wg_peer *peer)
+void wg_noise_handshake_init(struct noise_handshake *handshake,
+                            struct noise_static_identity *static_identity,
+                            const u8 peer_public_key[NOISE_PUBLIC_KEY_LEN],
+                            const u8 
peer_preshared_key[NOISE_SYMMETRIC_KEY_LEN],
+                            struct wg_peer *peer)
 {
        memset(handshake, 0, sizeof(*handshake));
        init_rwsem(&handshake->lock);
@@ -81,7 +72,7 @@
                       NOISE_SYMMETRIC_KEY_LEN);
        handshake->static_identity = static_identity;
        handshake->state = HANDSHAKE_ZEROED;
-       return wg_noise_precompute_static_static(peer);
+       wg_noise_precompute_static_static(peer);
 }
 
 static void handshake_zero(struct noise_handshake *handshake)
@@ -405,6 +396,19 @@
        return true;
 }
 
+static bool __must_check mix_precomputed_dh(u8 chaining_key[NOISE_HASH_LEN],
+                                           u8 key[NOISE_SYMMETRIC_KEY_LEN],
+                                           const u8 
precomputed[NOISE_PUBLIC_KEY_LEN])
+{
+       static u8 zero_point[NOISE_PUBLIC_KEY_LEN];
+       if (unlikely(!crypto_memneq(precomputed, zero_point, 
NOISE_PUBLIC_KEY_LEN)))
+               return false;
+       kdf(chaining_key, key, NULL, precomputed, NOISE_HASH_LEN,
+           NOISE_SYMMETRIC_KEY_LEN, 0, NOISE_PUBLIC_KEY_LEN,
+           chaining_key);
+       return true;
+}
+
 static void mix_hash(u8 hash[NOISE_HASH_LEN], const u8 *src, size_t src_len)
 {
        struct blake2s_state blake;
@@ -533,10 +537,9 @@
                        NOISE_PUBLIC_KEY_LEN, key, handshake->hash);
 
        /* ss */
-       kdf(handshake->chaining_key, key, NULL,
-           handshake->precomputed_static_static, NOISE_HASH_LEN,
-           NOISE_SYMMETRIC_KEY_LEN, 0, NOISE_PUBLIC_KEY_LEN,
-           handshake->chaining_key);
+       if (!mix_precomputed_dh(handshake->chaining_key, key,
+                               handshake->precomputed_static_static))
+               goto out;
 
        /* {t} */
        tai64n_now(timestamp);
@@ -597,9 +600,9 @@
        handshake = &peer->handshake;
 
        /* ss */
-       kdf(chaining_key, key, NULL, handshake->precomputed_static_static,
-           NOISE_HASH_LEN, NOISE_SYMMETRIC_KEY_LEN, 0, NOISE_PUBLIC_KEY_LEN,
-           chaining_key);
+       if (!mix_precomputed_dh(chaining_key, key,
+                               handshake->precomputed_static_static))
+           goto out;
 
        /* {t} */
        if (!message_decrypt(t, src->encrypted_timestamp,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/wireguard-linux-compat-0.0.20200215/src/noise.h 
new/wireguard-linux-compat-0.0.20200318/src/noise.h
--- old/wireguard-linux-compat-0.0.20200215/src/noise.h 2020-02-15 
00:01:31.000000000 +0100
+++ new/wireguard-linux-compat-0.0.20200318/src/noise.h 2020-03-19 
06:15:25.000000000 +0100
@@ -94,11 +94,11 @@
 struct wg_device;
 
 void wg_noise_init(void);
-bool wg_noise_handshake_init(struct noise_handshake *handshake,
-                          struct noise_static_identity *static_identity,
-                          const u8 peer_public_key[NOISE_PUBLIC_KEY_LEN],
-                          const u8 peer_preshared_key[NOISE_SYMMETRIC_KEY_LEN],
-                          struct wg_peer *peer);
+void wg_noise_handshake_init(struct noise_handshake *handshake,
+                            struct noise_static_identity *static_identity,
+                            const u8 peer_public_key[NOISE_PUBLIC_KEY_LEN],
+                            const u8 
peer_preshared_key[NOISE_SYMMETRIC_KEY_LEN],
+                            struct wg_peer *peer);
 void wg_noise_handshake_clear(struct noise_handshake *handshake);
 static inline void wg_noise_reset_last_sent_handshake(atomic64_t *handshake_ns)
 {
@@ -116,7 +116,7 @@
 void wg_noise_set_static_identity_private_key(
        struct noise_static_identity *static_identity,
        const u8 private_key[NOISE_PUBLIC_KEY_LEN]);
-bool wg_noise_precompute_static_static(struct wg_peer *peer);
+void wg_noise_precompute_static_static(struct wg_peer *peer);
 
 bool
 wg_noise_handshake_create_initiation(struct message_handshake_initiation *dst,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/wireguard-linux-compat-0.0.20200215/src/peer.c 
new/wireguard-linux-compat-0.0.20200318/src/peer.c
--- old/wireguard-linux-compat-0.0.20200215/src/peer.c  2020-02-15 
00:01:31.000000000 +0100
+++ new/wireguard-linux-compat-0.0.20200318/src/peer.c  2020-03-19 
06:15:25.000000000 +0100
@@ -34,11 +34,8 @@
                return ERR_PTR(ret);
        peer->device = wg;
 
-       if (!wg_noise_handshake_init(&peer->handshake, &wg->static_identity,
-                                    public_key, preshared_key, peer)) {
-               ret = -EKEYREJECTED;
-               goto err_1;
-       }
+       wg_noise_handshake_init(&peer->handshake, &wg->static_identity,
+                               public_key, preshared_key, peer);
        if (dst_cache_init(&peer->endpoint_cache, GFP_KERNEL))
                goto err_1;
        if (wg_packet_queue_init(&peer->tx_queue, wg_packet_tx_worker, false,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/wireguard-linux-compat-0.0.20200215/src/queueing.h 
new/wireguard-linux-compat-0.0.20200318/src/queueing.h
--- old/wireguard-linux-compat-0.0.20200215/src/queueing.h      2020-02-15 
00:01:31.000000000 +0100
+++ new/wireguard-linux-compat-0.0.20200318/src/queueing.h      2020-03-19 
06:15:25.000000000 +0100
@@ -66,7 +66,7 @@
 #define PACKET_PEER(skb) (PACKET_CB(skb)->keypair->entry.peer)
 
 /* Returns either the correct skb->protocol value, or 0 if invalid. */
-static inline __be16 wg_skb_examine_untrusted_ip_hdr(struct sk_buff *skb)
+static inline __be16 wg_examine_packet_protocol(struct sk_buff *skb)
 {
        if (skb_network_header(skb) >= skb->head &&
            (skb_network_header(skb) + sizeof(struct iphdr)) <=
@@ -81,6 +81,12 @@
        return 0;
 }
 
+static inline bool wg_check_packet_protocol(struct sk_buff *skb)
+{
+       __be16 real_protocol = wg_examine_packet_protocol(skb);
+       return real_protocol && skb->protocol == real_protocol;
+}
+
 static inline void wg_reset_packet(struct sk_buff *skb)
 {
        const int pfmemalloc = skb->pfmemalloc;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/wireguard-linux-compat-0.0.20200215/src/receive.c 
new/wireguard-linux-compat-0.0.20200318/src/receive.c
--- old/wireguard-linux-compat-0.0.20200215/src/receive.c       2020-02-15 
00:01:31.000000000 +0100
+++ new/wireguard-linux-compat-0.0.20200318/src/receive.c       2020-03-19 
06:15:25.000000000 +0100
@@ -57,7 +57,7 @@
        size_t data_offset, data_len, header_len;
        struct udphdr *udp;
 
-       if (unlikely(wg_skb_examine_untrusted_ip_hdr(skb) != skb->protocol ||
+       if (unlikely(!wg_check_packet_protocol(skb) ||
                     skb_transport_header(skb) < skb->head ||
                     (skb_transport_header(skb) + sizeof(struct udphdr)) >
                             skb_tail_pointer(skb)))
@@ -392,7 +392,7 @@
 #ifndef COMPAT_CANNOT_USE_CSUM_LEVEL
        skb->csum_level = ~0; /* All levels */
 #endif
-       skb->protocol = wg_skb_examine_untrusted_ip_hdr(skb);
+       skb->protocol = wg_examine_packet_protocol(skb);
        if (skb->protocol == htons(ETH_P_IP)) {
                len = ntohs(ip_hdr(skb)->tot_len);
                if (unlikely(len < sizeof(struct iphdr)))
@@ -597,8 +597,7 @@
                wg_packet_consume_data(wg, skb);
                break;
        default:
-               net_dbg_skb_ratelimited("%s: Invalid packet from %pISpfsc\n",
-                                       wg->dev->name, skb);
+               WARN(1, "Non-exhaustive parsing of packet header lead to 
unknown packet type!\n");
                goto err;
        }
        return;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/wireguard-linux-compat-0.0.20200215/src/send.c 
new/wireguard-linux-compat-0.0.20200318/src/send.c
--- old/wireguard-linux-compat-0.0.20200215/src/send.c  2020-02-15 
00:01:31.000000000 +0100
+++ new/wireguard-linux-compat-0.0.20200318/src/send.c  2020-03-19 
06:15:25.000000000 +0100
@@ -147,7 +147,7 @@
        unsigned int padded_size, last_unit = skb->len;
 
        if (unlikely(!PACKET_CB(skb)->mtu))
-               return -last_unit % MESSAGE_PADDING_MULTIPLE;
+               return ALIGN(last_unit, MESSAGE_PADDING_MULTIPLE) - last_unit;
 
        /* We do this modulo business with the MTU, just in case the networking
         * layer gives us a packet that's bigger than the MTU. In that case, we
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/wireguard-linux-compat-0.0.20200215/src/tests/netns.sh 
new/wireguard-linux-compat-0.0.20200318/src/tests/netns.sh
--- old/wireguard-linux-compat-0.0.20200215/src/tests/netns.sh  2020-02-15 
00:01:31.000000000 +0100
+++ new/wireguard-linux-compat-0.0.20200318/src/tests/netns.sh  2020-03-19 
06:15:25.000000000 +0100
@@ -530,11 +530,16 @@
 n0 wg set wg0 peer "$pub2" allowed-ips 
::/0,1700::/111,5000::/4,e000::/37,9000::/75
 n0 wg set wg0 peer "$pub2" allowed-ips ::/0
 n0 wg set wg0 peer "$pub2" remove
-low_order_points=( AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA= 
AQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA= 
4Ot6fDtBuK4WVuP68Z/EatoJjeucMrH9hmIFFl9JuAA= 
X5yVvKNQjCSx0LFVnIPvWwREXMRYHI6G2CJO3dCfEVc= 
7P///////////////////////////////////////38= 
7f///////////////////////////////////////38= 
7v///////////////////////////////////////38= )
-n0 wg set wg0 private-key /dev/null ${low_order_points[@]/#/peer }
-[[ -z $(n0 wg show wg0 peers) ]]
-n0 wg set wg0 private-key <(echo "$key1") ${low_order_points[@]/#/peer }
-[[ -z $(n0 wg show wg0 peers) ]]
+for low_order_point in AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA= 
AQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA= 
4Ot6fDtBuK4WVuP68Z/EatoJjeucMrH9hmIFFl9JuAA= 
X5yVvKNQjCSx0LFVnIPvWwREXMRYHI6G2CJO3dCfEVc= 
7P///////////////////////////////////////38= 
7f///////////////////////////////////////38= 
7v///////////////////////////////////////38=; do
+       n0 wg set wg0 peer "$low_order_point" persistent-keepalive 1 endpoint 
127.0.0.1:1111
+done
+[[ -n $(n0 wg show wg0 peers) ]]
+exec 4< <(n0 ncat -l -u -p 1111)
+ncat_pid=$!
+waitncatudp $netns0 $ncat_pid
+ip0 link set wg0 up
+! read -r -n 1 -t 2 <&4 || false
+kill $ncat_pid
 ip0 link del wg0
 
 declare -A objects
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/wireguard-linux-compat-0.0.20200215/src/version.h 
new/wireguard-linux-compat-0.0.20200318/src/version.h
--- old/wireguard-linux-compat-0.0.20200215/src/version.h       2020-02-15 
00:01:31.000000000 +0100
+++ new/wireguard-linux-compat-0.0.20200318/src/version.h       2020-03-19 
06:15:25.000000000 +0100
@@ -1,3 +1,3 @@
 #ifndef WIREGUARD_VERSION
-#define WIREGUARD_VERSION "0.0.20200215"
+#define WIREGUARD_VERSION "0.0.20200318"
 #endif


Reply via email to