已关闭
[Bug-Report|缺陷反馈]: spmm/arch22 Host 侧 M/K/N 未校验上限,static_cast 可能静默截断 #189
gts_sjj创建于  20 天前关闭于  17 天前
gts_sjj
20 天前 创建

一、问题描述(必填)

sparse/spmm/arch22/spmm_host.cpp 将矩阵 rows/cols 直接 static_cast<uint32_t> 得到 M/K/N,未校验上限。超大 shape 可能静默截断,导致内核维度错误。同仓 arch35 ValidateSpmmInputs 显式校验 rows<=INT32_MAX,arch22 缺失。

涉及文件:

  • sparse/spmm/arch22/spmm_host.cpp:186,202-204

二、问题详情

C-31 | spmm M/K/N 未校验上限(spmm_host.cpp:186,202-204)

uint32_t M = static_cast<uint32_t>(matAInner->rows);
uint32_t K = static_cast<uint32_t>(matA->cols);
uint32_t N = static_cast<uint32_t>(matB->cols);
  • 【确认】arch35 ValidateSpmmInputs(line 186) 显式校验 rows<=INT32_MAX,arch22 缺失。

三、影响

  • 内存安全:shape 截断致内核维度错误。
  • 一致性:arch22 与 arch35 校验缺口不一致。

四、建议修复

参照 arch35 补 rows<=INT32_MAX(及对应 cols)上限校验。

likedislike
Ggts_sjj
20 天前 issue类型由 任务 改变为 缺陷
HKFLYE
HKFLYE成员
19 天前 评论:

您好,感谢反馈,问题确认中。

likedislike
HKFLYEHKFLYE成员
19 天前 关联了pull request:fix issue
HKFLYE
HKFLYE成员
17 天前 评论:

已修复

likedislike
HKFLYEHKFLYE成员
17 天前 issue状态由 待办的 改变为 已完成
HKFLYEHKFLYE成员
17 天前 关闭了 issue
CANN-robotCANN-robot成员
17 天前 添加了label:resolved