diff options
author | Marek Olšák <[email protected]> | 2017-09-01 23:26:59 +0200 |
---|---|---|
committer | Marek Olšák <[email protected]> | 2017-09-11 16:29:52 +0200 |
commit | fc454954742e98213397a97033ab4f5b927e98d9 (patch) | |
tree | 2f76dc24a19cd9fa3bcd1b38a94a258b50420e54 /src/gallium/drivers/radeon/r600_pipe_common.c | |
parent | 7213293fe27bf8270121e36457b7ad7dbaffd309 (diff) |
gallium/radeon: add a proper fail path for calloc in r600_flush_from_st
Reviewed-by: Nicolai Hähnle <[email protected]>
Diffstat (limited to 'src/gallium/drivers/radeon/r600_pipe_common.c')
-rw-r--r-- | src/gallium/drivers/radeon/r600_pipe_common.c | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/src/gallium/drivers/radeon/r600_pipe_common.c b/src/gallium/drivers/radeon/r600_pipe_common.c index a5678faf89b..b17bf80bf50 100644 --- a/src/gallium/drivers/radeon/r600_pipe_common.c +++ b/src/gallium/drivers/radeon/r600_pipe_common.c @@ -453,8 +453,11 @@ static void r600_flush_from_st(struct pipe_context *ctx, if (fence) { struct r600_multi_fence *multi_fence = CALLOC_STRUCT(r600_multi_fence); - if (!multi_fence) - return; + if (!multi_fence) { + ws->fence_reference(&sdma_fence, NULL); + ws->fence_reference(&gfx_fence, NULL); + goto finish; + } multi_fence->reference.count = 1; /* If both fences are NULL, fence_finish will always return true. */ @@ -469,7 +472,7 @@ static void r600_flush_from_st(struct pipe_context *ctx, screen->fence_reference(screen, fence, NULL); *fence = (struct pipe_fence_handle*)multi_fence; } - +finish: if (!(flags & PIPE_FLUSH_DEFERRED)) { if (rctx->dma.cs) ws->cs_sync_flush(rctx->dma.cs); |