# bus: mhi: host: 解决unprepare和queue_buf之间的竞争问题
## 漏洞概述
在Linux内核中,修复了一个关于MHI主机之间的竞态条件漏洞。在客户端驱动程序的拆解过程中,客户端驱动程序可能会使用`mhi_unprepare_from_transfer()`来暂停数据流入,同时处理数据时,可能会调用`mhi_queue_buf()`,导致`mhi_gen_tre()`运行,并由此引发非法指针解引用,最终导致页面错误。
## 影响版本
未具体列出,但影响Linux内核中使用MHI主机接口的版本。
## 细节
客户端驱动程序在拆解过程中调用`mhi_unprepare_from_transfer()`来暂停数据流入,同时处理数据时,可能会调用`mhi_queue_buf()`,这会导致`mhi_gen_tre()`运行。如果`mhi_gen_tre()`在`mhi_unprepare_from_transfer()`已经拆解了通道后运行,那么由于非法指针解引用,会引发页面错误。
## 影响
`mhi_gen_tre()`未验证锁定后的通道状态,导致当通道被拆解后仍然尝试访问数据时,发生非法指针解引用,最终导致系统崩溃。通过让`mhi_gen_tre()`确认通道状态有效或返回错误来避免访问已解除初始化的数据,这个问题得以修复。
# | POC 描述 | 源链接 | 神龙链接 |
---|
标题: Making sure you're not a bot! -- 🔗来源链接
标签:
标题: Making sure you're not a bot! -- 🔗来源链接
标签:
标题: Making sure you're not a bot! -- 🔗来源链接
标签:
标题: Making sure you're not a bot! -- 🔗来源链接
标签:
标题: Making sure you're not a bot! -- 🔗来源链接
标签:
标题: Making sure you're not a bot! -- 🔗来源链接
标签:
标题: Making sure you're not a bot! -- 🔗来源链接
标签: