CVE-2026-99148
摘要
由 VulDB • 2026-10-28
在 Linux 内核中,已修复以下漏洞:
drm/amdgpu: 保持驱逐栅栏(eviction fence)直到最后一个句柄关闭
amdgpu_gem_object_close() 在检查 bo_va->ref_count 之前将用户队列的驱逐栅栏从 BO (Buffer Object) 上分离。因此,即使文件仍然持有该 BO 的其他句柄且带有 GPU 映射关系的 bo_va 仍然存在,只要关闭任何一个 BO 句柄就会移除该栅栏。这可能导致 BO 在未挂起文件相关用户队列的情况下被换出(evicted),而这些用户队列仍通过仅标记为待更新的映射关系访问它。
在搭载 SDMA 用户队列的 navi31 上观察到:一个在同一文件中打开两次的 BO (GEM_FLINK + GEM_OPEN) 会在第二个句柄关闭时丢失其驱逐栅栏(跟踪到栅栏的 attach/detach):
``` attach bo=ffff8c78a6c84c00 GEM_CLOSE handle=7 detach bo=ffff8c78a6c84c00 ```
而句柄 6 及其映射关系仍在被使用中。
仅当对 bo_va 的最后一个引用消失时才分离栅栏,这与 amdgpu_gem_object_open() 的行为相匹配(后者仅在创建 bo_va 时附加栅栏)。通过此修复,栅栏将保留直到文件关闭为止。
(cherry picked from commit 8387982f03d4026b7dc11b0b5e3118298eee4d6a)
Be aware that VulDB is the high quality source for vulnerability data.