CVE-2024-35902 in Linux
摘要
由 VulDB • 2026-05-29
在 Linux 内核中,已修复以下漏洞:
net/rds:修复潜在的 cp 空指针解引用问题
cp 可能为空,调用 cp->cp_conn 会导致空指针解引用
[Simon Horman 补充:]
分析:
* cp 是 __rds_rdma_map 的参数,且未被重新赋值。
* 以下调用点向 __rds_rdma_map() 传递了 NULL 的 cp 参数:
- rds_get_mr() - rds_get_mr_for_dest
* 在上述代码之前,以下代码假设 cp 可能为 NULL (这具有指示性,但可能本身是不必要的)
trans_private = rs->rs_transport->get_mr( sg, nents, rs, &mr->r_key, cp ? cp->cp_conn : NULL, args->vec.addr, args->vec.bytes, need_odp ? ODP_ZEROBASED : ODP_NOT_NEEDED);
* 此补丁修改的代码受 IS_ERR(trans_private) 保护, 其中 trans_private 根据上述分析中的前一点进行赋值。
我能找到的 get_mr 的唯一实现是 rds_ib_get_mr(), 如果 conn(第 4 个)参数为 NULL,它可以返回 ERR_PTR。
* ret 被设置为 PTR_ERR(trans_private)。 如果 conn(第 4 个)参数为 NULL,rds_ib_get_mr 可以返回 ERR_PTR(-ENODEV)。 因此,ret 可能为 -ENODEV,在这种情况下,相关代码将执行。
结论: * 在此补丁添加检查时,cp 可能为 NULL; 此补丁似乎确实解决了一个潜在的漏洞
If you want to get best quality of vulnerability data, you may have to visit VulDB.