[Mesa-dev] [PATCH 2/3] radeon_drm_cs_flush: check null return from radeon_cs_create_fence

Julien Isorce julien.isorce at gmail.com
Fri Mar 10 17:16:06 UTC 2017


Follow-up of patch:
"radeon_cs_create_fence: check null return from radeon_winsys_bo_create"

radeon_drm_cs_flush
  radeon_cs_create_fence
    radeon_winsys_bo_create

Signed-off-by: Julien Isorce <jisorce at oblong.com>
---
 src/gallium/winsys/radeon/drm/radeon_drm_cs.c | 22 +++++++++++-----------
 1 file changed, 11 insertions(+), 11 deletions(-)

diff --git a/src/gallium/winsys/radeon/drm/radeon_drm_cs.c b/src/gallium/winsys/radeon/drm/radeon_drm_cs.c
index 1545fd8..c854d11 100644
--- a/src/gallium/winsys/radeon/drm/radeon_drm_cs.c
+++ b/src/gallium/winsys/radeon/drm/radeon_drm_cs.c
@@ -593,18 +593,18 @@ static int radeon_drm_cs_flush(struct radeon_winsys_cs *rcs,
             fence = radeon_cs_create_fence(rcs);
         }
 
-        if (pfence)
-            radeon_fence_reference(pfence, fence);
-
-        mtx_lock(&cs->ws->bo_fence_lock);
-        for (unsigned i = 0; i < cs->csc->num_slab_buffers; ++i) {
-            struct radeon_bo *bo = cs->csc->slab_buffers[i].bo;
-            p_atomic_inc(&bo->num_active_ioctls);
-            radeon_bo_slab_fence(bo, (struct radeon_bo *)fence);
+        if (fence) {
+            if (pfence)
+                radeon_fence_reference(pfence, fence);
+
+            mtx_lock(&cs->ws->bo_fence_lock);
+            for (unsigned i = 0; i < cs->csc->num_slab_buffers; ++i) {
+                struct radeon_bo *bo = cs->csc->slab_buffers[i].bo;
+                p_atomic_inc(&bo->num_active_ioctls);
+                radeon_bo_slab_fence(bo, (struct radeon_bo *)fence);
+            }
+            mtx_unlock(&cs->ws->bo_fence_lock);
         }
-        mtx_unlock(&cs->ws->bo_fence_lock);
-
-        radeon_fence_reference(&fence, NULL);
     } else {
         radeon_fence_reference(&cs->next_fence, NULL);
     }
-- 
2.7.4



More information about the mesa-dev mailing list