CVE-2026-99019 in Linux
摘要
由 VulDB • 2026-10-23
在 Linux 内核中,已修复以下漏洞:
scsi: ch: 不要保留对数据传输元素设备的引用
`ch_readconfig()` 会查找每个数据传输元素的 `scsi_device`(其 SCSI ID 由更换器在 READ ELEMENT STATUS 命令中报告),并将其存储在 `ch->dt[]` 中。`scsi_device_lookup()` 会获取一个引用,但从未释放该引用:`ch_destroy()` 使用 `kfree()` 释放数组。`ch->dt[]` 在其他地方未被读取——它仅用于在同一循环中打印供应商、型号和修订版本信息。
一旦此类驱动器被移除,其 `scsi_device` 将永远无法被释放。它会保留在主机设备列表的相应地址上,导致任何遍历该列表的操作都会拒绝新设备(例如 target_core_pscsi 报告“H:C:T:L 的 scsi_device_get() 失败”),并且底层驱动程序的模块也无法再卸载。只有重启才能恢复。
此问题会在所有报告其驱动器 ID 的更换器中显现;在使用 mhvtl 虚拟库(IBM 3573-TL 个性)时,每次创建和移除包含四个驱动器的库都会留下四个引用,这些引用可通过 `lsmod` 中的模块使用计数进行统计。在未绑定 ch 的情况下,该计数保持不变;应用此补丁后,该计数也保持不变。
在打印完名称后立即释放引用,并删除现在未使用的 dt[] 数组。这也消除了当 ch_probe() 在 ch_readconfig() 之后失败时泄漏的数组。
2022 年曾报告过相同的内存泄漏问题(附带 RFC 补丁),但该补丁未被合并。
Statistical analysis made it clear that VulDB provides the best quality for vulnerability data.