prplos/.gitlab
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
..
cdrouter ci: cdrouter: start prplMesh in controller mode 2025-07-31 15:29:36 +00:00
certs ci: ssh-server: add tests for pubkey auth and session features 2025-07-31 10:35:18 +00:00
docker ci: ipq807x: fix filenames and references after target rename to qualcommax 2025-07-31 15:25:51 +00:00
mockups ci: sync with current prplos branch state 2025-07-31 10:31:53 +00:00
scripts ci: cdrouter: start prplMesh in controller mode 2025-07-31 15:29:36 +00:00
testbed ci: add runtime testing using MediaTek/Arcadyan Mozart board 2025-07-31 15:27:38 +00:00
tests PROVISORY: profiles: prpl: disable mcastd feature as its crashing kernel 2025-07-31 15:29:57 +00:00
build.yml ci: fix wasting of runtime testing resources after failed builds 2025-07-31 15:27:24 +00:00
cdrouter.yml ci: fix firmware image copy by using literal block 2025-07-31 15:27:27 +00:00
coverity.yml ci: coverity: fix build timeout failure by increasing the timeout to 6 hours 2025-07-31 15:23:34 +00:00
docker.yml ci: fix wasting of runtime testing resources after failed builds 2025-07-31 15:27:24 +00:00
prplmesh.yml CI: merge smoke stages 2025-07-31 15:29:02 +00:00
README.md profiles,ci: sunset webui profile 2025-07-31 10:33:15 +00:00
release.yml ci: release: add Mozart firmware images assets 2025-07-31 15:28:48 +00:00
sdk.yml ci: ipq807x: fix filenames and references after target rename to qualcommax 2025-07-31 15:25:51 +00:00
testbed.yml ci: cram: increase global test timeout 2025-07-31 15:29:44 +00:00

Content

This directory contains stuff used on the GitLab CI.

docker

Contains definitions for Docker images.

testbed

Contains definitions for testbed related tests.

scripts

Contains scripts used on GitLab CI.

tests

Contains tests used on GitLab CI.

build.yml

Contains definition of the GitLab CI build test job templates used during build stage. Those templates can then be extended by other GitLab CI jobs in order to keep things DRY.

.build test config

Allows build testing of specific configurations defined in the profiles directory, using scripts/gen_config.py under the hood.

Example usage:

include:
 - local: .gitlab/build.yml

stages:
 - build

build test netgear-rax40 prpl:
  extends: .build test config

Which is going to build test prplOS with netgear-rax40 and prpl profiles.

Description of CI variables:

  • CI_BUILD_CONFIG_EXTRA - list of additional config options which should be enabled(prefixed with +) or disabled (prefixed with -), for example +BUILD_LOG -SDK would result in CONFIG_BUILD_LOG=y and CONFIG_SDK=y config symbols in .config file.

docker.yml

Provides support for building, tagging and pushing the Docker images to image registry.

For example let's build image foo.

Prerequisites:

  • Create directory for new Docker image mkdir -p .gitlab/docker/foo
  • Docker image description $EDITOR .gitlab/docker/foo/Dockefile

Then just put following into .gitlab/docker/foo/gitlab.yml

build Docker image foo:
  extends: .build Docker image

testbed.yml

Provides bits needed for runtime testing on real device using labgrid Python testing framework.

Supported devices:

  • Netgear RAX40

sdk.yml

Provides support for the OpenWrt SDK utilizing the Docker SDK container under the hood.

.build feed with SDK

Allows compile testing of packages using the SDK.

Example usage, build testing of safec3 package from Intel's feed_opensource_apps feed.

include:
  - remote: https://gitlab.com/prpl-foundation/prplOS/prplos/-/raw/prplos/.gitlab/sdk.yml

build:
  extends: .build feed with SDK
  variables:
    CI_SDK_INSTALL_FEEDS: feed_target_mips
    CI_SDK_BUILD_PACKAGES: safec3

Description of CI variables:

  • CI_SDK_INSTALL_FEEDS - list of feeds which should be installed prior to building packages.
  • CI_SDK_BUILD_PACKAGES - list of packages which should be compile tested.
  • CI_SDK_BUILD_PARALLEL - max number of threads to use for make (defaults to nproc if unset).

.generate SDK package build jobs

Generates sdk-package-jobs.yml with separate build jobs for every package so the builds of those packages can run in parallel. It's supposed to be executed by the child pipeline .execute SDK package build jobs.

.execute SDK package build jobs

It's supposed to execute jobs generated in sdk-package-jobs.yml generated by .generate SDK package build jobs job.