r300g: fix crash when adding a new relocation
authorMarek Olšák <maraeo@gmail.com>
Fri, 8 Apr 2011 18:42:03 +0000 (20:42 +0200)
committerMarek Olšák <maraeo@gmail.com>
Fri, 8 Apr 2011 19:34:16 +0000 (21:34 +0200)
No idea why it's so hard to reproduce.
Broken with: c35572352e3e92683988ee8d151b47f4190d62f9

Thanks to Toni Spets for assistance.

src/gallium/winsys/radeon/drm/radeon_drm_cs.c

index 7576f3ac5fd12913ae255dd247348d8db9bd293a..f23533622df90500ba014d504b6af5c5f9bb9767 100644 (file)
@@ -265,8 +265,9 @@ static void radeon_add_reloc(struct radeon_cs_context *csc,
     }
 
     /* Initialize the new relocation. */
-    p_atomic_inc(&bo->num_cs_references);
+    csc->relocs_bo[csc->crelocs] = NULL;
     radeon_bo_reference(&csc->relocs_bo[csc->crelocs], bo);
+    p_atomic_inc(&bo->num_cs_references);
     reloc = &csc->relocs[csc->crelocs];
     reloc->handle = bo->handle;
     reloc->read_domains = rd;