漏洞类型: Array-index-out-of-bounds 影响的部件: 子系统的 驱动 问题描述: - 在移除设备( )时,当使用一个扩展器(expander)时,UBSAN( Undefined Behavior Sanitizer) 报告了一个数组越界错误。 - 下面是具体指明的错误位置和内容: - - - 问题的根源在于,对于直接连接的设备, 包含的是本地物理ID;而对于使用扩展器连接的设备, 包含的则是远程物理ID,而不是本地物理ID。 - 例如系统中 有8个物理端口,当某个端口连接了扩展器,该端口下的远程 PhyID 可能会超过 的范围,从而导致越界问题。 - 数组仅包含HBA的物理地址,不包含扩展器的物理地址,因此对扩展器后的设备使用 作为索引访问这个数组是错误的。 解决的方法: - 修复只能对直接连接的设备清除 标记。 关联的提交: - 修复上游项目中的问题: ,对应的提交为 ,此提交中针对问题本质进行了详细解释。 评审与测试记录: - 已经过在 中多轮的评审和测试,并最终由关键团队成员签署发布。