diff --git a/sys/dev/drm/amd/amdgpu/amdgpu_uvd.c b/sys/dev/drm/amd/amdgpu/amdgpu_uvd.c --- a/sys/dev/drm/amd/amdgpu/amdgpu_uvd.c +++ b/sys/dev/drm/amd/amdgpu/amdgpu_uvd.c @@ -780,8 +780,11 @@ case 2: /* it's a destroy msg, free the handle */ - for (i = 0; i < adev->uvd.max_handles; ++i) + for (i = 0; i < adev->uvd.max_handles; ++i) { + if (unlikely(adev->uvd.filp[i] != ctx->parser->filp)) + continue; atomic_cmpxchg(&adev->uvd.handles[i], handle, 0); + } amdgpu_bo_kunmap(bo); return 0;