Crash while using Wireguard in OpenWrt 19.07 with Kernel 5.4.89

Hello,

I've been using OpenWRT 19.07 with Linux kernel 5.4.89 to my router.

Linux router 5.4.89 #0 SMP PREEMPT Wed May 18 04:07:25 2022 aarch64 GNU/Linux

On this, I tried to include the Wireguard package,
Wireguard version - 1.0.20200611
Wireguard-tools version - 1.0.20191226

After successfully compiling and installing the package, I made Wireguard peer configuration and restarted the Wiregaurd interface.

After that, I am facing a crash!!! on my device.

Attaching the crash logs,

root@router:/# ifup wg10
root@router:/# [  480.687324] Unable to handle kernel read from unreadable memory at virtual address 00000000000007f0
[  480.687361] Mem abort info:
[  480.695180]   ESR = 0x96000005
[  480.698000]   EC = 0x25: DABT (current EL), IL = 32 bits
[  480.701076]   SET = 0, FnV = 0
[  480.706576]   EA = 0, S1PTW = 0
[  480.709413] Data abort info:
[  480.712445]   ISV = 0, ISS = 0x00000005
[  480.715565]   CM = 0, WnR = 0
[  480.719167] user pgtable: 4k pages, 39-bit VAs, pgdp=0000000069840000
[  480.722258] [00000000000007f0] pgd=0000000000000000, pud=0000000000000000
[  480.728713] Internal error: Oops: 96000005 [#1] PREEMPT SMP
[  480.735448] Modules linked in: ecm_ovs ecm rawmode_sim(P) ath_pktlog(P) ipt_REJECT ebtable_nat ebtable_filter ebtable_broute xt_time
 xt_tcpudp xt_tcpmss xt_string xt_statistic xt_state xt_recent xt_quota xt_policy xt_pkttype xt_physdev xt_owner xt_nat xt_multiport xt
_mark xt_mac xt_limit xt_length xt_hl xt_helper xt_esp xt_ecn xt_dscp xt_conntrack xt_connmark xt_connlimit xt_connbytes xt_comment xt_
bpf xt_addrtype xt_TCPMSS xt_REDIRECT xt_MASQUERADE xt_LOG xt_HL xt_FLOWOFFLOAD xt_DSCP xt_CT xt_CLASSIFY wireguard usbserial usbhid um
s_usbat ums_sddr55 ums_sddr09 ums_karma ums_jumpshot ums_isd200 ums_freecom ums_datafab ums_cypress ums_alauda ts_fsm ts_bm ppp_mppe pp
p_async nf_reject_ipv4 nf_nat_tftp nf_nat_snmp_basic nf_nat_sip nf_nat_rtsp nf_nat_pptp nf_nat_irc nf_nat_h323 nf_nat_ftp nf_nat_amanda
 nf_log_ipv4 nf_flow_table_hw nf_flow_table nf_conntrack_tftp nf_conntrack_snmp nf_conntrack_sip nf_conntrack_rtsp nf_conntrack_rtcache
 nf_conntrack_pptp nf_conntrack_netlink nf_conntrack_irc
[  480.735566]  nf_conntrack_h323 nf_conntrack_ftp nf_conntrack_broadcast ts_kmp nf_conntrack_amanda macvlan l2tp_ppp iptable_raw iptab
le_nat iptable_mangle iptable_filter ipt_ah ipt_ECN ip_tables hid_generic ebtables ebt_vlan ebt_stp ebt_snat ebt_redirect ebt_pkttype e
bt_mark_m ebt_mark ebt_limit ebt_ip6 ebt_ip ebt_dnat ebt_arpreply ebt_arp ebt_among ebt_802_3 arptable_filter arpt_mangle arp_tables fu
se sch_teql sch_sfq sch_red sch_prio sch_pie sch_multiq sch_gred sch_fq sch_dsmark sch_codel em_text em_nbyte em_meta em_cmp act_simple
 act_police act_pedit act_ipt act_gact act_csum act_connmark sch_tbf sch_ingress sch_htb sch_hfsc em_u32 cls_u32 cls_tcindex cls_route 
cls_matchall cls_fw cls_flow cls_basic act_skbedit act_mirred hid qca_nss_tunipip6 qca_nss_tun6rd qca_nss_ipsecmgr evdev qca_nss_cfi_cr
yptoapi qca_nss_qdisc g_diag qca_nss_macsec qca_nss_crypto qca_mcs diagchar usb_f_diag crc_ccitt wifi_3_0 smart_antenna(P) qca_ol qca_s
pectral umac mem_manager(P) asf(P) qdf qca_nss_vxlanmgr
[  480.805867]  qca_nss_pptp qca_nss_pppoe pppoe qca_nss_map_t qca_nss_lag_mgr qca_nss_l2tpv2 qca_nss_gre qca_nss_bridge_mgr qca_nss_vl
an hyfi_bridging libcomposite qca_ovsmgr openvswitch nf_conncount nf_nat nf_conntrack pptp pppox ppp_generic slhc nf_defrag_ipv4 libcrc
32c xt_sctp emesh_sp cryptodev xt_set ip_set_list_set ip_set_hash_netportnet ip_set_hash_netport ip_set_hash_netnet ip_set_hash_netifac
e ip_set_hash_net ip_set_hash_mac ip_set_hash_ipportnet ip_set_hash_ipportip ip_set_hash_ipport ip_set_hash_ipmark ip_set_hash_ip ip_se
t_bitmap_port ip_set_bitmap_ipmac ip_set_bitmap_ip ip_set nfnetlink rmnet_nss nf_log_ipv6 nf_log_common ip6table_mangle ip6table_filter
 ip6_tables ip6t_REJECT x_tables nf_reject_ipv6 msdos bonding ip6_gre ip_gre gre ifb rmnet_core rmnet_ctl nat46 nf_defrag_ipv6 sit qca_
nss_drv l2tp_netlink l2tp_core ipcomp6 xfrm6_tunnel esp6 ah6 xfrm4_tunnel ipcomp esp4 ah4 ip6_tunnel qca_nss_dp tunnel6 tunnel4 ip_tunn
el veth tun snd_rawmidi snd_seq_device snd_pcm_oss snd_pcm
[  480.892925]  snd_timer snd_mixer_oss snd_hwdep snd_compress snd soundcore qca_ssdk xfrm_user xfrm_ipcomp af_key xfrm_algo vfat fat n
tfs cfg80211 nls_utf8 nls_iso8859_1 nls_cp437 vxlan udp_tunnel ip6_udp_tunnel nsh shortcut_fe_drv shortcut_fe_ipv6 shortcut_fe authenc 
uas usb_storage leds_gpio bootconfig xhci_plat_hcd xhci_pci xhci_hcd dwc3 dwc3_qcom uhci_hcd ohci_platform ohci_hcd phy_qcom_qusb2 ahci
 libahci libata fsl_mph_dr_of ehci_platform ehci_fsl sd_mod scsi_mod ehci_hcd gpio_button_hotplug button_hotplug input_core udc_core us
bcore nls_base usb_common
[  481.029190] CPU: 3 PID: 1351 Comm: kworker/u8:6 Tainted: P                  5.4.89 #0
[  481.051425] Hardware name: Qualcomm Technologies, Inc. IPQ8074/AP-HK09 (DT)
[  481.059339] Workqueue: wg-kex-wg10 wg_packet_handshake_send_worker [wireguard]
[  481.066096] pstate: 80400005 (Nzcv daif +PAN -UAO)
[  481.073389] pc : iptunnel_xmit+0x150/0x24c
[  481.078157] lr : iptunnel_xmit+0x124/0x24c
[  481.082232] sp : ffffff802d12ba30
[  481.086311] x29: ffffff802d12ba30 x28: 0000000000000088 
[  481.089701] x27: 000000003b9aa223 x26: ffffff803e0d50c0 
[  481.095082] x25: ffffffc010abe840 x24: 0000000000000011 
[  481.100376] x23: 0000000000000000 x22: ffffff802cf3a9c0 
[  481.105673] x21: 0000000000000000 x20: ffffff802d6d3000 
[  481.110967] x19: ffffff802c722a00 x18: 00000000b3b5f5f8 
[  481.116265] x17: 0000000000000001 x16: ffffffc010827778 
[  481.121558] x15: 0000000000000070 x14: 0000000000000080 
[  481.126854] x13: 0000000000000028 x12: 0000000000000000 
[  481.132148] x11: 0000000000000000 x10: 0000000023a29a3b 
[  481.137444] x9 : 0000000000000000 x8 : 0000000023a29a3b 
[  481.142738] x7 : 0000000000000040 x6 : ffffffc02f54a000 
[  481.148034] x5 : ffffff802d010000 x4 : ffffff803ff95e60 
[  481.153328] x3 : ffffffc010a4be60 x2 : 0000000000000000 
[  481.158623] x1 : 000000000000002f x0 : 0000000000000000 
[  481.163919] Call trace:
[  481.169213]  iptunnel_xmit+0x150/0x24c
[  481.171386]  udp_tunnel_xmit_skb+0xdc/0xf8 [udp_tunnel]
[  481.175211]  wg_packet_receive+0x92c/0xd78 [wireguard]
[  481.180332]  wg_socket_send_buffer_to_peer+0xcc/0x440 [wireguard]
[  481.185540]  wg_packet_queue_free+0x134/0x3d0 [wireguard]
[  481.191703]  wg_packet_handshake_send_worker+0x18/0x30 [wireguard]
[  481.197089]  process_one_work+0x194/0x270
[  481.203157]  worker_thread+0x200/0x314
[  481.207237]  kthread+0x140/0x150
[  481.210882]  ret_from_fork+0x10/0x18
[  481.214270] Code: 7100a71f 528005e1 7a411304 54000100 (f943f800) 
[  481.217830] ---[ end trace cf2fad6a940c8a89 ]---
[  481.223815] Kernel panic - not syncing: Fatal exception in interrupt
[  481.228510] SMP: stopping secondary CPUs
[  481.235037] coresight coresight-tmc-etr: timeout while waiting for completion of Manual Flush
[  481.238907] coresight coresight-tmc-etr: timeout while waiting for TMC to be Ready
[  481.247181] coresight coresight-tmc-etr: TMC aborted
[  481.254691] Couldn't get reading for sensor 4
[  481.259753] The reading for sensor 5 is 0x0020529c
[  481.264008] The reading for sensor 6 is 0x0020629f
[  481.268749] Couldn't get reading for sensor 7
[  481.273468] The reading for sensor 8 is 0x002082a2
[  481.277897] The reading for sensor 9 is 0x002092a2
[  481.282583] The reading for sensor 10 is 0x0020a2a6
[  481.287413] Couldn't get reading for sensor 11
[  481.292132] The reading for sensor 12 is 0x0020c2a6
[  481.296646] The reading for sensor 13 is 0x0020d2a6
[  481.301475] Couldn't get reading for sensor 14
[  481.306282] The reading for sensor 15 is 0x0020f29f
[  481.310794] Kernel Offset: disabled
[  481.315565] CPU features: 0x0002,20002000
[  481.319037] Memory Limit: none
[  482.324057] Rebooting in 3 seconds..

Could any suggest some idea on what can be the issue?
Thanks in Advance.

It appears you are using firmware that is not from the official OpenWrt project.

When using forks/offshoots/vendor-specific builds that are "based on OpenWrt", there may be many differences compared to the official versions (hosted by OpenWrt.org). Some of these customizations may fundamentally change the way that OpenWrt works. You might need help from people with specific/specialized knowledge about the firmware you are using, so it is possible that advice you get here may not be useful.

You may find that the best options are:

  1. Install an official version of OpenWrt, if your device is supported (see https://firmware-selector.openwrt.org).
  2. Ask for help from the maintainer(s) or user community of the specific firmware that you are using.
  3. Provide the source code for the firmware so that users on this forum can understand how your firmware works (OpenWrt forum users are volunteers, so somebody might look at the code if they have time and are interested in your issue).

If you believe that this specific issue is common to generic/official OpenWrt and/or the maintainers of your build have indicated as such, please feel free to clarify.

2 Likes

@wackejohn

Anticipating your support here,

I am having a Device with OpenWRT 19.07 with Linux kernel 5.4.89.
Can I get a suggestion on which Wireguard-tools and Wireguard-linux-compact version shall I use here?

You would install the one found in the package repository for the version of 19.07.x you have installed. There isn't an option. Also, I believe Wireguard is built into the Kernel on that version. You should only need the LuCI app and the wireguard-tools.

With that noted...why are you installing Wireguard-linux-compact?

As noted by others, try the official versions.

There is no OpenWrt 19.07 for ipq807x, let alone with kernel 5.4.89, so there's nothing to discuss about your issues here, please talk to your distributor or QCA representative.

So far ipq807x isn't supported by OpenWrt at all, efforts are underway and promising, but unmerged at this point (and targetting master/ kernel v5.15, so a totally different situation).

2 Likes

I have found "Wireguard-linux-compact" in Wireguard Makefile of Openwrt 19.07