BCM4352 Wifi card not working since kernel update

Hello,

I’m using Fedora 38. Since the 6.3.3 kernel update, my Asus wifi PCI-E card stopped working.
I use the wl module.
Here is the relevant dmesg output (the wl module seems to fail to load) :

mai 26 20:43:57.381446 pc-antoine kernel: ------------[ cut here ]------------
mai 26 20:43:57.381456 pc-antoine kernel: kernel BUG at arch/x86/kernel/traps.c:255!
mai 26 20:43:57.381493 pc-antoine kernel: invalid opcode: 0000 [#1] PREEMPT SMP NOPTI
mai 26 20:43:57.383803 pc-antoine kernel: CPU: 1 PID: 712 Comm: (udev-worker) Tainted: P           OE      6.3.3-200.fc38.x86_64 #1
mai 26 20:43:57.383828 pc-antoine kernel: Hardware name: Gigabyte Technology Co., Ltd. B660 DS3H DDR4/B660 DS3H DDR4, BIOS F2 12/17/2021
mai 26 20:43:57.383841 pc-antoine kernel: RIP: 0010:exc_control_protection+0xb8/0xc0
mai 26 20:43:57.383854 pc-antoine kernel: Code: 48 8b 93 80 00 00 00 be fc 00 00 00 48 c7 c7 72 a4 84 a5 e8 8a 05 17 ff e9 7b ff ff ff 48 c7 43 50 00 00 00 00 e9 6e ff ff ff <0f> 0b 66 0f 1f 44 00 00 90 90 90 90 90 90 90 90 90 90 90 90 90 90
mai 26 20:43:57.383866 pc-antoine kernel: RSP: 0018:ffffaf1641373748 EFLAGS: 00010002
mai 26 20:43:57.383878 pc-antoine kernel: RAX: 0000000000000034 RBX: ffffaf1641373768 RCX: 0000000000000000
mai 26 20:43:57.383890 pc-antoine kernel: RDX: 0000000000000000 RSI: ffffffffa5876f4d RDI: 00000000ffffffff
mai 26 20:43:57.383901 pc-antoine kernel: RBP: 0000000000000003 R08: 0000000000000000 R09: ffffaf16413735f0
mai 26 20:43:57.383915 pc-antoine kernel: R10: 0000000000000003 R11: ffffffffa6146128 R12: 0000000000000000
mai 26 20:43:57.383926 pc-antoine kernel: R13: 0000000000000000 R14: 0000000000000000 R15: 0000000000000000
mai 26 20:43:57.383937 pc-antoine kernel: FS:  00007fac7a8a7940(0000) GS:ffff8cd7afa40000(0000) knlGS:0000000000000000
mai 26 20:43:57.383949 pc-antoine kernel: CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
mai 26 20:43:57.383961 pc-antoine kernel: CR2: 00005588a27eb000 CR3: 0000000104406001 CR4: 0000000000f70ee0
mai 26 20:43:57.383972 pc-antoine kernel: PKRU: 55555554
mai 26 20:43:57.383984 pc-antoine kernel: Call Trace:
mai 26 20:43:57.383995 pc-antoine kernel:  <TASK>
mai 26 20:43:57.384008 pc-antoine kernel:  asm_exc_control_protection+0x26/0x30
mai 26 20:43:57.384018 pc-antoine kernel: RIP: 0010:otp_read_bit+0x8ce/0x106c [wl]
mai 26 20:43:57.384031 pc-antoine kernel: Code: f0 41 5e c9 c3 48 81 c3 a4 00 00 00 48 89 df e8 1c e0 17 00 25 ff ff f0 ff 48 89 de 0d 00 00 0c 00 89 c7 e8 78 e0 17 00 eb ae <55> 48 89 e5 41 57 41 56 41 55 41 54 49 89 fc 53 48 83 ec 08 8b 47
mai 26 20:43:57.384043 pc-antoine kernel: RSP: 0018:ffffaf1641373818 EFLAGS: 00010202
mai 26 20:43:57.384057 pc-antoine kernel: RAX: ffffffffc1f44920 RBX: ffff8cd40bd69800 RCX: 0000000000000000
mai 26 20:43:57.384068 pc-antoine kernel: RDX: 0000000000000001 RSI: 0000000000000206 RDI: ffff8cd40bd69800
mai 26 20:43:57.384079 pc-antoine kernel: RBP: ffffaf1641373840 R08: ffffaf16413738ce R09: 0863db0414cbb500
mai 26 20:43:57.384090 pc-antoine kernel: R10: 0000000000000007 R11: ffffffffa4f6eb90 R12: ffff8cd408733001
mai 26 20:43:57.384101 pc-antoine kernel: R13: 0000000000000010 R14: ffffaf16413738ce R15: 0000000000000000
mai 26 20:43:57.384113 pc-antoine kernel:  ? __pfx_pci_conf1_write+0x10/0x10
mai 26 20:43:57.384124 pc-antoine kernel:  ? otp_init+0xa5/0xc3 [wl]
mai 26 20:43:57.384135 pc-antoine kernel:  otp_read_word+0x51/0x9d [wl]
mai 26 20:43:57.384147 pc-antoine kernel:  ? si_set_sromctl+0x50/0x5b [wl]
mai 26 20:43:57.384159 pc-antoine kernel:  wlc_phy_attach_acphy+0x164d/0x182d [wl]
mai 26 20:43:57.384171 pc-antoine kernel:  ? wl_init_timer+0x6a/0xa0 [wl]
mai 26 20:43:57.384181 pc-antoine kernel:  wlc_phy_attach+0x818/0xfc2 [wl]
mai 26 20:43:57.384195 pc-antoine kernel:  ? osl_malloc+0x1d/0x50 [wl]
mai 26 20:43:57.384205 pc-antoine kernel:  wlc_bmac_attach+0x8ee/0x1215 [wl]
mai 26 20:43:57.384216 pc-antoine kernel:  ? osl_malloc+0x1d/0x50 [wl]
mai 26 20:43:57.384225 pc-antoine kernel:  ? __kmalloc+0x4d/0x150
mai 26 20:43:57.384236 pc-antoine kernel:  ? wlc_scan_attach+0x161/0x1b9 [wl]
mai 26 20:43:57.384245 pc-antoine kernel:  wlc_attach+0x283/0x1a93 [wl]
mai 26 20:43:57.384254 pc-antoine kernel:  ? iomem_map_sanity_check+0x63/0x110
mai 26 20:43:57.384266 pc-antoine kernel:  ? iomem_map_sanity_check+0xc3/0x110
mai 26 20:43:57.384276 pc-antoine kernel:  wl_pci_probe+0x2a0/0xf50 [wl]
mai 26 20:43:57.384287 pc-antoine kernel:  ? local_pci_probe+0x42/0xa0
mai 26 20:43:57.384295 pc-antoine kernel:  ? pci_device_probe+0xc7/0x240
mai 26 20:43:57.384306 pc-antoine kernel:  ? really_probe+0x19b/0x3e0
mai 26 20:43:57.384318 pc-antoine kernel:  ? __pfx___driver_attach+0x10/0x10
mai 26 20:43:57.384329 pc-antoine kernel:  ? __driver_probe_device+0x78/0x160
mai 26 20:43:57.384339 pc-antoine kernel:  ? driver_probe_device+0x1f/0x90
mai 26 20:43:57.384350 pc-antoine kernel:  ? __driver_attach+0xd2/0x1c0
mai 26 20:43:57.384361 pc-antoine kernel:  ? bus_for_each_dev+0x85/0xd0
mai 26 20:43:57.384371 pc-antoine kernel:  ? bus_add_driver+0x116/0x220
mai 26 20:43:57.384382 pc-antoine kernel:  ? driver_register+0x59/0x100
mai 26 20:43:57.384391 pc-antoine kernel:  ? __UNIQUE_ID_vermagic196+0x50e97c1067c9/0x50e97c1067c9 [wl]
mai 26 20:43:57.384402 pc-antoine kernel:  ? do_one_initcall+0x5a/0x240
mai 26 20:43:57.384412 pc-antoine kernel:  ? do_init_module+0x4a/0x210
mai 26 20:43:57.384423 pc-antoine kernel:  ? __do_sys_init_module+0x17f/0x1b0
mai 26 20:43:57.384433 pc-antoine kernel:  ? do_syscall_64+0x5d/0x90
mai 26 20:43:57.384444 pc-antoine kernel:  ? exc_page_fault+0x7c/0x180
mai 26 20:43:57.384455 pc-antoine kernel:  ? entry_SYSCALL_64_after_hwframe+0x72/0xdc
mai 26 20:43:57.384466 pc-antoine kernel:  </TASK>
mai 26 20:43:57.384477 pc-antoine kernel: Modules linked in: snd_soc_hdac_hda snd_hda_ext_core snd_soc_acpi_intel_match wl(POE+) kvm_intel snd_soc_acpi soundwire_bus snd_hda_codec_realtek snd_soc_core snd_hda_codec_generic snd_hda_codec_hdmi ledtrig_audio kvm snd_compress ac97_bus snd_pcm_dmaengine snd_hda_intel snd_intel_dspcfg snd_intel_sdw_acpi snd_hda_codec snd_hda_core snd_hwdep irqbypass snd_seq iTCO_wdt rapl intel_pmc_bxt intel_cstate pmt_telemetry ee1004 iTCO_vendor_support pmt_class snd_seq_device intel_uncore snd_pcm gigabyte_wmi cfg80211 mei_me wmi_bmof pcspkr snd_timer ses i2c_i801 xpad enclosure rfkill snd i2c_smbus ff_memless mei idma64 soundcore scsi_transport_sas intel_hid intel_vsec sparse_keymap acpi_pad acpi_tad joydev vhba(OE) loop zram amdgpu i2c_algo_bit drm_ttm_helper ttm iommu_v2 drm_buddy gpu_sched crct10dif_pclmul crc32_pclmul crc32c_intel polyval_clmulni polyval_generic drm_display_helper nvme uas ghash_clmulni_intel nvme_core r8169 sha512_ssse3 usb_storage cec nvme_common video wmi pinctrl_alderlake scsi_dh_rdac
mai 26 20:43:57.384542 pc-antoine kernel:  scsi_dh_emc scsi_dh_alua ip6_tables ip_tables dm_multipath i2c_dev fuse
mai 26 20:43:57.384553 pc-antoine kernel: ---[ end trace 0000000000000000 ]---

Fixed by disabling IBT in the kernel command line (ibt=off)

There are downsides Linux IBT By Default in 6.2 to this, so worthy of a bug report, but broadcom’s security practices have needed improvement before: Broadcom wl wifi flaws (April, 2019). Depending on your threat environment, you may need to replace the card with something from a different vendor.