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(),因为中断处理程序在持有互斥锁期间会执行所有操作,所以即使中断处理程序仍在运行也无关紧要。解决建议
建议您更新当前系统或软件至最新版,完成漏洞的修复。- 攻击路径 N/A
- 攻击复杂度 N/A
- 权限要求 N/A
- 影响范围 N/A
- 用户交互 N/A
- 可用性 N/A
- 保密性 N/A
- 完整性 N/A
CWE-ID | 漏洞类型 |
Exp相关链接

版权声明
本站原创文章转载请注明文章出处及链接,谢谢合作!
评论