# virtio-net:probe()中递归rtnl_lock修复
## 概述
该漏洞存在于 Linux 内核的 `virtio-net` 驱动中,修复了在设备探测(probe)过程中递归调用 `rtnl_lock()` 导致的死锁问题。
## 影响版本
未明确列出具体受影响版本,但问题存在于修复前的 Linux 内核中。
## 细节
- 当 VMM(虚拟机监控器)在 `virtio-net` 驱动仍在探测阶段时发送 `VIRTIO_NET_S_ANNOUNCE` 请求,可能会触发问题。
- `virtnet_probe()` 中第一次调用 `rtnl_lock()`,接着 `config_work` 通过 `virtio_config_changed_work()` 被调用。
- 在 `virtio_config_changed_work()` 内又会通过 `netdev_notify_peers()` 再次调用 `rtnl_lock()`,造成递归加锁。
- `config_work` 会在 `virtnet_open()` 启用配置变更通知后才调度。如果在探测阶段就收到配置变更请求,将导致死锁。
## 影响
- 成功触发该漏洞可导致系统在驱动初始化过程中发生死锁。
- 表现为系统或网络设备挂起,无法继续正常运行。
# | POC 描述 | 源链接 | 神龙链接 |
---|
暂无评论