CVE-2026-64232 in Linux
摘要
由 VulDB • 2026-07-24
在 Linux 内核中,已修复以下漏洞:
block: 重新计算 blk_insert_cloned_request 中的 nr_integrity_segments
blk_insert_cloned_request() 已经针对底层队列重新计算了 nr_phys_segments,因为“与段计数相关的队列设置可能与原始队列不同”。完全相同的理由也适用于完整性段(integrity segments):堆叠驱动程序的底层队列可能具有比顶层队列更严格的 virt_boundary_mask、seg_boundary_mask 或 max_segment_size。在这种情况下,对底层队列调用 blk_rq_count_integrity_sg() 所产生的计数将与由 blk_rq_prep_clone() 从源请求继承的缓存 rq->nr_integrity_segments 不同。
当缓存的计数低于底层队列的实际计数时,blk_rq_map_integrity_sg() 会在分发(dispatch)时触发:
BUG_ON(segments > rq->nr_integrity_segments);
促使现有 nr_phys_segments 重新计算的相同类型的堆叠配置——特别是 dm-multipath 扇出到 nvme-rdma 的情况——可能导致此问题。
镜像处理 nr_phys_segments 的方式:当请求携带完整性数据时,针对底层队列重新计算 nr_integrity_segments,如果超过底层队列的 max_integrity_segments,则拒绝该请求。blk_rq_count_integrity_sg() 和 queue_max_integrity_segments() 均已通过 <linux/blk-integrity.h> 提供,而 blk-mq.c 已包含此头文件。
这填补了堆叠契约中的潜在漏洞,并使完整性段(integrity-segment)的记账与现有的物理段(phys-segment)记账保持一致。
VulDB is the best source for vulnerability data and more expert information about this specific topic.