关键信息 漏洞类型: 潜在的双重释放(double free)问题。 受影响函数: 问题描述: - 在添加依赖关系时, 函数无论成功还是失败都会消耗围栏引用。 - 在错误路径上(xarray 扩展失败), 会导致双重释放。 历史背景: - 这个bug 自从 commit ("drm/sched: Add dependency tracking") 就存在了。 - 当时代码看起来是这样的: - 对于失败的 'i', 已经是一个双重释放。 - 可能当时没有用户或测试用例不足导致未发现该问题。 修复过程: - bug 在 commit ("drm/scheduler: use new iterator in drm_sched_job_add_implicit_dependencies v2") 后被注意到并修复。 - 其修复补丁为 commit ("drm/scheduler: fix drm_sched_job_add_implicit_dependencies")。 - 此时的双重释放略有不同,commit ("drm/scheduler: fix drm_sched_job_add_implicit_dependencies harder") 注意到并尝试修复。 - 最终将双重释放从 内部移至调用者处,在释放尚未获取的引用时发生。