summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJulien Isorce <julien.isorce@gmail.com>2017-03-10 17:20:56 +0000
committerEmil Velikov <emil.l.velikov@gmail.com>2017-04-12 13:30:22 +0100
commit1b2bcb6826ff8855e96117c9523821336a3be88a (patch)
treeda49460f23ce4f7b32e21e0c17dddc5d80fe22b5
parent99468c236f09211fcc4716efd400c039079c9a40 (diff)
winsys/radeon: check null return from radeon_cs_create_fence in cs_flush
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@oblong.com> Signed-off-by: Marek Olšák <marek.olsak@amd.com> (cherry picked from commit d08c0930af8aaef5bdf80df618bb906e0b349830) [Emil Velikov: resolve trivial conflicts] Nominated-by: Emil Velikov <emil.velikov@collabora.com> Signed-off-by: Emil Velikov <emil.velikov@collabora.com> Conflicts: src/gallium/winsys/radeon/drm/radeon_drm_cs.c
-rw-r--r--src/gallium/winsys/radeon/drm/radeon_drm_cs.c24
1 files changed, 13 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 fd52a405c00..2ca0950744b 100644
--- a/src/gallium/winsys/radeon/drm/radeon_drm_cs.c
+++ b/src/gallium/winsys/radeon/drm/radeon_drm_cs.c
@@ -593,18 +593,20 @@ static int radeon_drm_cs_flush(struct radeon_winsys_cs *rcs,
fence = radeon_cs_create_fence(rcs);
}
- if (pfence)
- radeon_fence_reference(pfence, fence);
-
- pipe_mutex_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);
- }
- pipe_mutex_unlock(cs->ws->bo_fence_lock);
+ if (fence) {
+ if (pfence)
+ radeon_fence_reference(pfence, fence);
+
+ pipe_mutex_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);
+ }
+ pipe_mutex_unlock(cs->ws->bo_fence_lock);
- radeon_fence_reference(&fence, NULL);
+ radeon_fence_reference(&fence, NULL);
+ }
} else {
radeon_fence_reference(&cs->next_fence, NULL);
}