diff options
author | Julien Isorce <julien.isorce@gmail.com> | 2017-03-10 17:20:56 +0000 |
---|---|---|
committer | Emil Velikov <emil.l.velikov@gmail.com> | 2017-04-12 13:30:22 +0100 |
commit | 1b2bcb6826ff8855e96117c9523821336a3be88a (patch) | |
tree | da49460f23ce4f7b32e21e0c17dddc5d80fe22b5 | |
parent | 99468c236f09211fcc4716efd400c039079c9a40 (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.c | 24 |
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); } |