DragonFlyBSD Kernel Audit
DF-1988 / fix.diff
← back to finding ↓ download raw
diff --git a/sys/dev/drm/radeon/radeon_sa.c b/sys/dev/drm/radeon/radeon_sa.c
--- a/sys/dev/drm/radeon/radeon_sa.c
+++ b/sys/dev/drm/radeon/radeon_sa.c
@@ -79,6 +79,7 @@
 {
 	struct radeon_sa_bo *sa_bo, *tmp;
 
+	lockmgr(&sa_manager->wq.lock, LK_EXCLUSIVE);
 	if (!list_empty(&sa_manager->olist)) {
 		sa_manager->hole = &sa_manager->olist,
 		radeon_sa_bo_try_free(sa_manager);
@@ -91,6 +92,7 @@
 	}
 	radeon_bo_unref(&sa_manager->bo);
 	sa_manager->size = 0;
+	lockmgr(&sa_manager->wq.lock, LK_RELEASE);
 }
 
 int radeon_sa_bo_manager_start(struct radeon_device *rdev,