rtw89项目中的PCI设备探测NULL指针问题分析与解决

rtw89项目中的PCI设备探测NULL指针问题分析与解决

【免费下载链接】rtw89 Driver for Realtek 8852AE, an 802.11ax device 【免费下载链接】rtw89 项目地址: https://gitcode.com/gh_mirrors/rt/rtw89

问题背景

在Linux内核6.6.33版本环境下,使用rtw89无线网卡驱动时出现了NULL指针解引用问题,导致系统无法正常关机。该问题发生在PCI设备探测阶段,具体表现为内核日志中出现"BUG: kernel NULL pointer dereference"错误。

问题现象

系统日志显示,当加载rtw89pci模块时,内核在rtw89_pci_probe函数中访问了NULL指针地址0x000000000000008c。错误发生在以下代码位置:

rtwdev->hci.rpwm_addr = pci_info->rpwm_addr;

此时系统还伴随出现"ucsi_acpi USBC000:00: UCSI_GET_PDOS failed (-95)"的错误信息。

技术分析

通过分析代码调用链,我们可以梳理出以下执行路径:

  1. 系统通过PCI设备ID匹配到rtw89_8852ae_info驱动信息结构体
  2. 该结构体包含指向rtw8852a_pci_info的指针
  3. 在设备探测过程中,驱动尝试访问pci_info->rpwm_addr成员

问题的根源在于pci_info指针可能为NULL,或者在内存中未被正确初始化。通过版本比对发现,该问题出现在驱动更新后的特定版本区间内。

解决方案

对于遇到此问题的用户,可以考虑以下几种解决方案:

  1. 回退驱动版本:使用已知稳定的旧版本驱动(如23547bbb版本)可以暂时规避此问题

  2. 使用内核内置驱动:对于内核6.6.33版本,可以直接使用内核内置的rtw89驱动,该版本相对稳定

  3. 配置优化:如果使用内置驱动,建议进行以下优化配置:

    • 在/etc/modprobe.d/70-rtw89.conf中添加"options rtw89_core disable_ps_mode=y"
    • 在/etc/NetworkManager/conf.d/default-wifi-powersave-on.conf中设置"wifi.powersave = 2"

后续更新

值得注意的是,在后续的驱动更新中,开发者已经修复了这个问题。用户更新到最新版本后,该NULL指针解引用错误不再出现。这表明该问题可能是一个版本间的临时性兼容问题。

总结

PCI设备探测过程中的NULL指针问题通常与驱动和内核版本间的兼容性有关。对于无线网卡驱动这类硬件相关组件,建议用户:

  1. 关注驱动与内核版本的匹配性
  2. 及时更新到稳定版本
  3. 必要时使用内核内置驱动
  4. 合理配置电源管理参数以获得最佳稳定性

通过以上措施,可以有效避免类似问题的发生,确保无线网络连接的稳定性。

【免费下载链接】rtw89 Driver for Realtek 8852AE, an 802.11ax device 【免费下载链接】rtw89 项目地址: https://gitcode.com/gh_mirrors/rt/rtw89

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值