DragonFlyBSD Kernel Audit
DF-1596 / fix.diff
← back to finding ↓ download raw
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;