# net/9p:为trans_fd使用专用自旋锁
## 概述
Linux内核中修复了一个漏洞:`net/9p` 使用专用自旋锁 `trans_fd`。
## 影响版本
未指定具体影响版本。
## 细节
`syzbot` 报告了 `p9_req_put()` 中的不一致锁状态:
- `p9_tag_remove()` 从 `p9_req_put()` (来自中断上下文) 使用 `spin_lock_irqsave()` 锁定了 "struct p9_client"->lock;
- 而 `trans_fd` (不在中断上下文) 使用 `spin_lock()`。
实际上,这些锁保护的是不同内容:
- `client.c` 和 `trans_fd.c` 中,`client.c` 保护 idr 用于 fid/tag 分配,
- 而 `trans_fd.c` 的锁则保护其自己的请求列表和请求状态字段,即传输的状态机。
## 影响
漏洞可能导致不一致的锁状态,从而引发竞态条件或系统不稳定。通过使用专用自旋锁 `trans_fd` 可以解决此问题。
# | POC 描述 | 源链接 | 神龙链接 |
---|
标题: Making sure you're not a bot! -- 🔗来源链接
标签:
标题: Making sure you're not a bot! -- 🔗来源链接
标签:
标题: Making sure you're not a bot! -- 🔗来源链接
标签:
暂无评论