can: mcp251x:如果在 mcp251x_open 期间发生中断,则修复死锁(CVE-2024-46791)

admin 2024-09-19 12:26:02 Ali_nvd 来源:ZONE.CI 全球网 0 阅读模式
can: mcp251x:如果在 mcp251x_open 期间发生中断,则修复死锁(CVE-2024-46791)

CVE编号

CVE-2024-46791

利用情况

暂无

补丁情况

N/A

披露时间

2024-09-18
漏洞描述
在Linux内核中,已经解决了以下漏洞:当在mcp251x_open期间发生中断时,can模块中的mcp251x可能会出现死锁问题。在mcp251x_hw_wake()函数中,当持有mpc_lock互斥锁时调用了此函数,并禁用了中断处理程序,以便在唤醒设备时不会处理任何中断。如果此时已经发生了中断,等待中断处理程序完成将导致死锁,因为它将尝试获取相同的互斥锁。以下是可能产生死锁的CPU处理流程示意:CPU0 CPU1---- ----执行mcp251x_open() mutex_lock(&priv->mcp_lock)(锁住互斥锁) 请求进行线程化中断(request_threaded_irq) <此时发生中断> mcp251x_can_ist() mutex_lock(&priv->mcp_lock)(尝试再次锁住互斥锁) mcp251x_hw_wake()禁用中断(disable_irq) <-- 这里会发生死锁解决方案是使用disable_irq_nosync()替代disable_irq(),因为中断处理程序在持有互斥锁期间会执行所有操作,所以即使中断处理程序仍在运行也无关紧要。
解决建议
建议您更新当前系统或软件至最新版,完成漏洞的修复。
参考链接
https://git.kernel.org/stable/c/3a49b6b1caf5cefc05264d29079d52c99cb188e0
https://git.kernel.org/stable/c/513c8fc189b52f7922e36bdca58997482b198f0e
https://git.kernel.org/stable/c/7dd9c26bd6cf679bcfdef01a8659791aa6487a29
https://git.kernel.org/stable/c/8fecde9c3f9a4b97b68bb97c9f47e5b662586ba7
https://git.kernel.org/stable/c/e554113a1cd2a9cfc6c7af7bdea2141c5757e188
https://git.kernel.org/stable/c/f7ab9e14b23a3eac6714bdc4dba244d8aa1ef646
CVSS3评分 N/A
  • 攻击路径 N/A
  • 攻击复杂度 N/A
  • 权限要求 N/A
  • 影响范围 N/A
  • 用户交互 N/A
  • 可用性 N/A
  • 保密性 N/A
  • 完整性 N/A
N/A
CWE-ID 漏洞类型
- avd.aliyun.com
weinxin
版权声明
本站原创文章转载请注明文章出处及链接,谢谢合作!
评论:0   参与:  0