Go to file
Petr Štetiar b7699d132b
PROVISORY: profiles: prpl: disable mcastd feature as its crashing kernel
I’m unable to use prplWare in x86/64 QEMU, because the kernel crashes as
soon as mcastd kernel module is loaded:

 detected buffer overflow in strncpy
 Kernel BUG at fortify_panic+0x13/0x20 [verbose debug info unavailable]
 invalid opcode: 0000 [#1] SMP NOPTI
 CPU: 3 PID: 3300 Comm: tr181-mcastd Tainted: G           O       6.6.86 #0
 Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS 1.17.0-5.fc42 04/01/2014
 RIP: 0010:fortify_panic+0x13/0x20
 Code: 84 00 00 00 00 00 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 55 48 89 fe 48 c7 c7 60 0c 20 82 48 89 e5 e8 7d 68 c8 ff <0f> 0b 90 66 2e 0f 1f 84 00 00 00 00 00 90 90 90 90 90 90 90 90 90
 RSP: 0018:ffffc9000506bb78 EFLAGS: 00010246
 RAX: 0000000000000023 RBX: ffff88800749401c RCX: 0000000000000000
 RDX: 0000000000000000 RSI: ffff88801f59d5c0 RDI: ffff88801f59d5c0
 RBP: ffffc9000506bb78 R08: 0000000000000000 R09: ffffc9000506ba00
 R10: 0000000000000003 R11: ffffffff824b2f88 R12: 0000000000000031
 R13: 0000000000001000 R14: ffffffffa08c2e20 R15: ffff888005a14780
 FS:  00007f9eed74cb28(0000) GS:ffff88801f580000(0000) knlGS:0000000000000000
 CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
 CR2: 00007f9eed4ec000 CR3: 0000000007afe003 CR4: 0000000000370ee0
 Call Trace:
  <TASK>
  ? show_regs+0x60/0x70
  ? die+0x32/0x90
  ? do_trap+0xf7/0x100
  ? do_error_trap+0x6c/0x90
  ? fortify_panic+0x13/0x20
  ? exc_invalid_op+0x4f/0x70
  ? fortify_panic+0x13/0x20
  ? asm_exc_invalid_op+0x1b/0x20
  ? mcastdnl_register+0x60/0xa0 [mcastd_core]
  ? fortify_panic+0x13/0x20
  ? fortify_panic+0x13/0x20
  kvar_string_set+0x96/0xa0 [mcastd_core]
  mcastd_snooper_cleanup+0xea4/0x14d0 [mcastd_core]
  mcastd_function_unregister+0x190/0x1c0 [mcastd_core]
  mcastdnl_register+0x88/0xa0 [mcastd_core]
  netlink_rcv_skb+0x55/0x100
  mcastdnl_multicast+0xe3/0x100 [mcastd_core]
  netlink_unicast+0x212/0x2f0
  netlink_sendmsg+0x22c/0x480
  __sys_sendto+0x1af/0x1c0
  ? __vm_munmap+0xa4/0x110
  __x64_sys_sendto+0x1f/0x30
  x64_sys_call+0x15bf/0x1c90
  do_syscall_64+0x3d/0x90
  entry_SYSCALL_64_after_hwframe+0x78/0xe2
 RIP: 0033:0x7f9eed72a10b
 Code: c3 8b 07 85 c0 75 24 49 89 fb 48 89 f0 48 89 d7 48 89 ce 4c 89 c2 4d 89 ca 4c 8b 44 24 08 4c 8b 4c 24 10 4c 89 5c 24 08 0f 05 <c3> e9 de c7 ff ff 41 54 55 48 89 f5 be 00 88 08 00 53 48 81 ec a0
 RSP: 002b:00007ffc5a358f08 EFLAGS: 00000246 ORIG_RAX: 000000000000002c
 RAX: ffffffffffffffda RBX: 000000000000002c RCX: 00007f9eed72a10b
 RDX: 0000000000000114 RSI: 00007f9eed582320 RDI: 0000000000000007
 RBP: 00007f9eed74cb28 R08: 00007ffc5a358f6c R09: 000000000000000c
 R10: 0000000000000000 R11: 0000000000000246 R12: 00007ffc5a358f6c
 R13: 00007f9eed57d120 R14: 00007f9eed57e0f8 R15: 00007f9eed57d17d
  </TASK>
 Modules linked in: mcastd_routing(O) mcastd_proxy(O) mcastd_core(O) pppoe ppp_async i915 video pppox ppp_generic nf_flow_table_inet mac80211_hwsim(O) mac80211(O) ipt_REJECT ebtable_nat ebtable_filter ebtable_broute cfg80211(O) xt_time xt_tcpudp xt_tcpmss xt_statistic xt_state xt_recent xt_quota xt_pkttype xt_owner xt_nat xt_multiport xt_mark xt_mac xt_limit xt_length xt_hl xt_helper xt_ecn xt_dscp xt_conntrack xt_connmark xt_connlimit xt_connbytes xt_comment xt_cgroup xt_addrtype xt_TCPMSS xt_REDIRECT xt_NFQUEUE xt_MASQUERADE xt_LOG xt_HL xt_DSCP xt_CT xt_CLASSIFY wmi ts_fsm ts_bm slhc sch_prio nft_reject_ipv6 nft_reject_ipv4 nft_reject_inet nft_reject nft_redir nft_quota nft_numgen nft_nat nft_masq nft_log nft_limit nft_hash nft_flow_offload nft_ct nft_chain_nat nfnetlink_queue nf_tables nf_reject_ipv4 nf_nat_tftp nf_nat_snmp_basic nf_nat_sip nf_nat_pptp nf_nat_irc nf_nat_h323 nf_nat_ftp nf_nat_amanda nf_log_syslog nf_flow_table nf_conntrack_tftp nf_conntrack_snmp nf_conntrack_sip nf_conntrack_sane
  nf_conntrack_pptp nf_conntrack_netbios_ns nf_conntrack_irc nf_conntrack_h323 nf_conntrack_ftp nf_conntrack_broadcast ts_kmp nf_conntrack_amanda nf_conncount iptable_raw iptable_nat iptable_mangle iptable_filter ipt_ECN ip6table_raw ip_tables forcedeth ebtables ebt_vlan ebt_stp ebt_snat ebt_redirect ebt_pkttype ebt_mark_m ebt_mark ebt_limit ebt_ip6 ebt_ip ebt_dnat ebt_arpreply ebt_arp ebt_among ebt_802_3 e1000e drm_display_helper drm_buddy crc_ccitt compat(O) cls_flower bnx2 asn1_decoder act_vlan sch_teql sch_sfq sch_multiq sch_gred sch_fq sch_ets sch_codel em_text em_nbyte em_meta em_cmp act_skbmod act_simple act_pedit act_csum libcrc32c sch_tbf sch_ingress sch_htb sch_hfsc em_u32 cls_u32 cls_route cls_matchall cls_fw cls_flow cls_basic act_skbedit act_mirred act_gact evdev i2c_dev xt_set ip_set_list_set ip_set_hash_netportnet ip_set_hash_netport ip_set_hash_netnet ip_set_hash_netiface 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_ipmac ip_set_hash_ip ip_set_bitmap_port ip_set_bitmap_ipmac ip_set_bitmap_ip ip_set nfnetlink dwmac_intel ip6table_nat nf_nat nf_conntrack nf_defrag_ipv6 nf_defrag_ipv4 ip6t_NPT ip6t_rt ip6t_mh ip6t_ipv6header ip6t_hbh ip6t_frag ip6t_eui64 ip6t_ah ip6table_mangle ip6table_filter ip6_tables ip6t_REJECT x_tables nf_reject_ipv6 dwmac_generic stmmac_platform stmmac ixgbe e1000 amd_xgbe ifb mdio ip6_tunnel tunnel6 veth nls_utf8 pcs_xpcs ena sha512_ssse3 sha512_generic seqiv sha3_generic jitterentropy_rng drbg md5 hmac geniv rng cmac nls_iso8859_1 nls_cp437 r8169 mdio_devres gpio_keys igb igc vfat fat button_hotplug(O) tg3 realtek phylink mii libphy
 ---[ end trace 0000000000000000 ]---
 RIP: 0010:fortify_panic+0x13/0x20
 Code: 84 00 00 00 00 00 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 55 48 89 fe 48 c7 c7 60 0c 20 82 48 89 e5 e8 7d 68 c8 ff <0f> 0b 90 66 2e 0f 1f 84 00 00 00 00 00 90 90 90 90 90 90 90 90 90
 RSP: 0018:ffffc9000506bb78 EFLAGS: 00010246
 RAX: 0000000000000023 RBX: ffff88800749401c RCX: 0000000000000000
 RDX: 0000000000000000 RSI: ffff88801f59d5c0 RDI: ffff88801f59d5c0
 RBP: ffffc9000506bb78 R08: 0000000000000000 R09: ffffc9000506ba00
 R10: 0000000000000003 R11: ffffffff824b2f88 R12: 0000000000000031
 R13: 0000000000001000 R14: ffffffffa08c2e20 R15: ffff888005a14780
 FS:  00007f9eed74cb28(0000) GS:ffff88801f580000(0000) knlGS:0000000000000000
 CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
 CR2: 00007f9eed4ec000 CR3: 0000000007afe003 CR4: 0000000000370ee0
 Kernel panic - not syncing: Fatal exception
 Kernel Offset: disabled
 Rebooting in 3 seconds..

So lets disabled this feature until the issue is fixed.

References: PPW-771
Link: https://gitlab.com/prpl-foundation/prplos/prplos/-/merge_requests/1229#note_2560400819
Signed-off-by: Petr Štetiar <petr.stetiar@prplfoundation.org>
2025-07-31 15:29:57 +00:00
.devcontainer/ci-env
.github CI: labeler: Add stm32 target 2024-11-28 18:49:21 +00:00
.gitlab PROVISORY: profiles: prpl: disable mcastd feature as its crashing kernel 2025-07-31 15:29:57 +00:00
.testbed Revert "PROVISORY: ci: cdrouter: workaround no-wan-tr069-inform test failures with 480s timeout" 2025-07-31 15:28:43 +00:00
.vscode meta: VS Code: add "Git: Always Sign Off" setting 2024-10-03 17:18:51 +02:00
config build: add support for checksec.sh based mitigation reports 2025-07-31 15:20:37 +00:00
include target: fix kernel_menuconfig with external feed overwriting generic 2025-07-31 15:29:47 +00:00
LICENSES
package Revert "procd: add patch to mount sys and proc with relatime option" 2025-07-31 15:28:01 +00:00
profiles PROVISORY: profiles: prpl: disable mcastd feature as its crashing kernel 2025-07-31 15:29:57 +00:00
scripts scripts: prplos_version.sh: mark development version as 4.1.0 2025-07-31 15:29:46 +00:00
target kernel: move kernel-6.6 file to linux/generic directory 2025-07-31 15:27:59 +00:00
toolchain toolchain: glibc: Update glibc 2.38 to recent HEAD 2025-07-27 19:47:26 +02:00
tools build: add support for checksec.sh based mitigation reports 2025-07-31 15:20:37 +00:00
.gitattributes
.gitignore gitignore: ignore local APK keys 2024-05-17 22:03:06 +03:00
.gitlab-ci.yml CI: merge smoke stages 2025-07-31 15:29:02 +00:00
BSDmakefile
Config.in
COPYING
feeds.conf.default feeds.conf.default: use github.com package feed mirrors 2025-07-31 15:25:47 +00:00
Makefile build,base-files: propagate prplOS version into build artifacts 2025-07-31 15:18:10 +00:00
README.md README: replace "MacOSX" with "macOS" 2024-04-01 18:46:30 +02:00
rules.mk build: add comments to makefiles 2024-11-28 18:47:03 +00:00

OpenWrt logo

OpenWrt Project is a Linux operating system targeting embedded devices. Instead of trying to create a single, static firmware, OpenWrt provides a fully writable filesystem with package management. This frees you from the application selection and configuration provided by the vendor and allows you to customize the device through the use of packages to suit any application. For developers, OpenWrt is the framework to build an application without having to build a complete firmware around it; for users this means the ability for full customization, to use the device in ways never envisioned.

Sunshine!

Download

Built firmware images are available for many architectures and come with a package selection to be used as WiFi home router. To quickly find a factory image usable to migrate from a vendor stock firmware to OpenWrt, try the Firmware Selector.

If your device is supported, please follow the Info link to see install instructions or consult the support resources listed below.

An advanced user may require additional or specific package. (Toolchain, SDK, ...) For everything else than simple firmware download, try the wiki download page:

Development

To build your own firmware you need a GNU/Linux, BSD or macOS system (case sensitive filesystem required). Cygwin is unsupported because of the lack of a case sensitive file system.

Requirements

You need the following tools to compile OpenWrt, the package names vary between distributions. A complete list with distribution specific packages is found in the Build System Setup documentation.

binutils bzip2 diff find flex gawk gcc-6+ getopt grep install libc-dev libz-dev
make4.1+ perl python3.7+ rsync subversion unzip which

Quickstart

  1. Run ./scripts/feeds update -a to obtain all the latest package definitions defined in feeds.conf / feeds.conf.default

  2. Run ./scripts/feeds install -a to install symlinks for all obtained packages into package/feeds/

  3. Run make menuconfig to select your preferred configuration for the toolchain, target system & firmware packages.

  4. Run make to build your firmware. This will download all sources, build the cross-compile toolchain and then cross-compile the GNU/Linux kernel & all chosen applications for your target system.

The main repository uses multiple sub-repositories to manage packages of different categories. All packages are installed via the OpenWrt package manager called opkg. If you're looking to develop the web interface or port packages to OpenWrt, please find the fitting repository below.

  • LuCI Web Interface: Modern and modular interface to control the device via a web browser.

  • OpenWrt Packages: Community repository of ported packages.

  • OpenWrt Routing: Packages specifically focused on (mesh) routing.

  • OpenWrt Video: Packages specifically focused on display servers and clients (Xorg and Wayland).

Support Information

For a list of supported devices see the OpenWrt Hardware Database

Documentation

Support Community

  • Forum: For usage, projects, discussions and hardware advise.
  • Support Chat: Channel #openwrt on oftc.net.

Developer Community

License

OpenWrt is licensed under GPL-2.0