Wireguard crashing device - kernel errors

I have a wireguard interface configured, but whenever I start the interface my device freezes and reboots.

Luckily I configured the interface not to start at boot.

I have a few seconds after starting the wg0 interface to peek at the logs before the device crashes, and this is what I see:

Mon Nov  6 10:44:54 2017 daemon.notice netifd: Interface 'wg0' is setting up now
Mon Nov  6 10:44:55 2017 kern.alert kernel: [   72.281539] CPU 0 Unable to handle kernel paging request at virtual address 00000000, epc == 802e000c, ra == 802e0000
Mon Nov  6 10:44:55 2017 kern.warn kernel: [   72.292300] Oops[#1]:
Mon Nov  6 10:44:55 2017 kern.warn kernel: [   72.294609] CPU: 0 PID: 1484 Comm: ip Not tainted 4.4.92 #0
Mon Nov  6 10:44:55 2017 kern.warn kernel: [   72.300256] task: 87d94000 ti: 86fb0000 task.ti: 86fb0000
Mon Nov  6 10:44:55 2017 kern.warn kernel: [   72.305726] $ 0   : 00000000 00000061 00000000 00000000
Mon Nov  6 10:44:55 2017 kern.warn kernel: [   72.311057] $ 4   : 86fb1998 86d6011c 00000000 00000000
Mon Nov  6 10:44:55 2017 kern.warn kernel: [   72.316390] $ 8   : 00000038 80065078 00000000 00000000
Mon Nov  6 10:44:55 2017 kern.warn kernel: [   72.321723] $12   : 00000000 00000013 00000000 00000000
Mon Nov  6 10:44:55 2017 kern.warn kernel: [   72.327056] $16   : 86fb18e0 86d60000 871df0d0 00000000
Mon Nov  6 10:44:55 2017 kern.warn kernel: [   72.332389] $20   : 0000000a ffffff9f 00000000 86d60000
Mon Nov  6 10:44:55 2017 kern.warn kernel: [   72.337721] $24   : 00000000 00000000                  
Mon Nov  6 10:44:55 2017 kern.warn kernel: [   72.343054] $28   : 86fb0000 86fb1890 86fb1b18 802e0000
Mon Nov  6 10:44:55 2017 kern.warn kernel: [   72.348388] Hi    : 00000013
Mon Nov  6 10:44:55 2017 kern.warn kernel: [   72.351308] Lo    : 00000003
Mon Nov  6 10:44:55 2017 kern.warn kernel: [   72.354245] epc   : 802e000c ip_tunnel_get_stats64+0x30/0xf0
Mon Nov  6 10:44:55 2017 kern.warn kernel: [   72.359983] ra    : 802e0000 ip_tunnel_get_stats64+0x24/0xf0
Mon Nov  6 10:44:55 2017 kern.warn kernel: [   72.365715] Status: 1100fc02	KERNEL EXL 
Mon Nov  6 10:44:55 2017 kern.warn kernel: [   72.369712] Cause : 00800008 (ExcCode 02)
Mon Nov  6 10:44:55 2017 kern.warn kernel: [   72.373775] BadVA : 00000000
Mon Nov  6 10:44:55 2017 kern.warn kernel: [   72.376690] PrId  : 00019750 (MIPS 74Kc)
Mon Nov  6 10:44:55 2017 kern.warn kernel: [   72.380666] Modules linked in: pppoe ppp_async iptable_nat ath9k pppox ppp_generic nf_nat_ipv4 nf_conntrack_ipv6 nf_conntrack_ipv4 ipt_REJECT ipt_MASQUERADE ath9k_common xt_time xt_tcpudp xt_state xt_nat xt_multiport xt_mark xt_mac xt_limit xt_conntrack xt_comment xt_TCPMSS xt_REDIRECT xt_LOG wireguard ums_usbat ums_sddr55 ums_sddr09 ums_karma ums_jumpshot ums_isd200 ums_freecom ums_datafab ums_cypress ums_alauda slhc nf_reject_ipv4 nf_nat_redirect nf_nat_masquMon Nov  6 10:44:55 2017 kern.warn kernel: [   72.469709] Process ip (pid: 1484, threadinfo=86fb0000, task=87d94000, tls=774add48)
Mon Nov  6 10:44:55 2017 kern.warn kernel: [   72.477554] Stack : 8642ea00 86e82c00 86fb194a 87e21500 803de8b8 86fb18e0 86d60000 80264684
Mon Nov  6 10:44:55 2017 kern.warn kernel: [   72.477554] 	  8642ea00 86e82c00 00000000 8642ea00 87c19a80 87c19a80 86e99000 8027961c
Mon Nov  6 10:44:55 2017 kern.warn kernel: [   72.477554] 	  00000003 801543e8 04000aff ffffffff 00000000 00000000 00000000 00000000
Mon Nov  6 10:44:55 2017 kern.warn kernel: [   72.477554] 	  00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
Mon Nov  6 10:44:55 2017 kern.warn kernel: [   72.477554] 	  00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
Mon Nov  6 10:44:55 2017 kern.warn kernel: [   72.477554] 	  ...
Mon Nov  6 10:44:55 2017 kern.warn kernel: [   72.513880] Call Trace:
Mon Nov  6 10:44:55 2017 kern.warn kernel: [   72.516361] [<802e000c>] ip_tunnel_get_stats64+0x30/0xf0
Mon Nov  6 10:44:55 2017 kern.warn kernel: [   72.521767] [<80264684>] dev_get_stats+0x48/0xd4
Mon Nov  6 10:44:55 2017 kern.warn kernel: [   72.526458] [<8027961c>] rtnl_fill_stats+0x20/0x134
Mon Nov  6 10:44:55 2017 kern.warn kernel: [   72.531408] [<80279c38>] rtnl_fill_ifinfo+0x508/0xa08
Mon Nov  6 10:44:55 2017 kern.warn kernel: [   72.536532] [<8027d2d0>] rtmsg_ifinfo_build_skb+0x7c/0xe8
Mon Nov  6 10:44:55 2017 kern.warn kernel: [   72.542012] [<8027d398>] rtmsg_ifinfo+0x2c/0x64
Mon Nov  6 10:44:55 2017 kern.warn kernel: [   72.546615] [<8026b9a0>] __dev_notify_flags+0x34/0xac
Mon Nov  6 10:44:55 2017 kern.warn kernel: [   72.551736] [<8027c718>] rtnl_configure_link+0x30/0x9c
Mon Nov  6 10:44:55 2017 kern.warn kernel: [   72.556945] [<8027ceb0>] rtnl_newlink+0x600/0x6f0
Mon Nov  6 10:44:55 2017 kern.warn kernel: [   72.561709] 
Mon Nov  6 10:44:55 2017 kern.warn kernel: [   72.563221] 
Mon Nov  6 10:44:55 2017 kern.warn kernel: [   72.563221] Code: 8e2202a8  41606000  000000c0 <8c440000> 8c490004  8c430010  8c480014  8c4c0008  8c47000c 
Mon Nov  6 10:44:55 2017 kern.warn kernel: [   72.573558] ---[ end trace 993bb059f495479e ]---

Manually creating the interface will crash the device immediately:

ip link add dev wg0 type wireguard

My installed versions are:

LEDE 17.01.4 - ar71xx/generic - mips_24kc

kmod-wireguard - 4.4.92+0.0.20171017-1
luci-proto-wireguard - git-17.298.45605-07e7ff0-1
wireguard-tools - 0.0.20171101-1

Anyone know what's going on?

That looks like a kernel bug to me, I think you should file a report for it.

You dont have to worry about crash log. It will be in /sys/kernel/debug after reboot

From crashlog its clear some code tries to reference NULL pointer (paging request at 0x00000000)
May be some part is missing ?
For example list of loaded modules does not contain udp_tunnel, ip6_udp_tunnel, xt_hashlimit which wireguard request

opkg depends kmod-wireguard
kmod-wireguard depends on:
kernel (= 4.9.58-1-047d66ed7bff1b5a27c3d18a669ac2de)
kmod-udptunnel6
kmod-udptunnel4
kmod-ipt-hashlimit

How did you install wireguard ? When you install kmod-wireguard it should also install dependencies but they are not loaded

1 Like