Linux kernel amdgpu: recursive reservation lock in devcoredump can self-deadlock the coredump worker
Impact
When a job hangs, amdgpu_devcoredump_format() takes the VM root page directory's dma_resv via amdgpu_vm_lock_by_pasid() and then calls amdgpu_bo_reserve() on each IB buffer object, with no ww_acquire ticket shared between them. If an IB BO shares its dma_resv with the root PD - the always-valid case - the second acquire blocks on a lock the same worker already holds, wedging the events_unbound kernel worker that runs the deferred coredump. On a shared AMD GPU node this path is reached by any tenant whose job times out the engine, and a stuck kernel worker is not something an operator can clear without taking the node out of service. With amdgpu.gpu_recovery=0 the timeout handler refires roughly every two seconds and each pass emits a lockdep splat, drowning the kernel ring buffer and any logging that depends on it. In the trace quoted in the fix the two reservations are on different BOs, so what was observed there is the lockdep warning; the self-deadlock is the case the patch describes as real. The fix also removes a BO refcount leak on the amdgpu_bo_reserve() failure path.
Who can reach it
Local. Any tenant holding a GPU context on the node - an open amdgpu render node is enough, no elevated privilege - who can submit work that hangs the engine. No remote path.
What to do
Move to a stable kernel carrying one of the two linked commits. The amdgpu module cannot be unloaded while GPU workloads hold it, so in practice this means draining the node and rebooting into the patched kernel. The record names only the stable commits, not a fixed release number, so check your distro kernel's changelog rather than assuming a version.
References
Related entries
- Linux kernel nouveau: use-after-free racing the GEM info ioctl against GEM closeCVE-2026-89553 · Linux kernel nouveau GEM (info ioctl VMA lookup)Unscored
- Linux amdgpu: resume force-completes an uninitialized UVD ring on SR-IOV virtual functionsCVE-2026-89827 · Linux kernel amdgpu (UVD ring fence restore under SR-IOV)Unscored
- Linux amdgpu powerplay: malformed VBIOS VoltageObjectInfo table causes infinite loop or heap OOB readCVE-2026-93179 · Linux kernel drm/amd/powerplay (VoltageObjectInfo VBIOS table parser)Unscored
- Linux kernel amdgpu: use of freed module text when RCU callbacks run after module unloadCVE-2026-93809 · Linux kernel amdgpu (missing rcu_barrier() on module unload)Unscored
- Linux kernel amdkfd: user-controlled metadata size lets any render-group user force a huge kernel allocationCVE-2026-93823 · Linux kernel amdkfd (AMDKFD_IOC_GET_DMABUF_INFO metadata buffer)Unscored
- Linux kernel amdgpu: unclamped write position in the vBIOS update sysfs attribute overflows the bufferCVE-2026-97425 · Linux kernel amdgpu (vBIOS update sysfs bin attribute)Unscored
This entry is curated: imported from vendor advisories with machine assistance, not yet individually verified. Confirm against your vendor's advisory before acting, and report anything wrong.