gallium/radeon: add a proper fail path for calloc in r600_flush_from_st
authorMarek Olšák <marek.olsak@amd.com>
Fri, 1 Sep 2017 21:26:59 +0000 (23:26 +0200)
committerMarek Olšák <marek.olsak@amd.com>
Mon, 11 Sep 2017 14:29:52 +0000 (16:29 +0200)
Reviewed-by: Nicolai Hähnle <nicolai.haehnle@amd.com>
src/gallium/drivers/radeon/r600_pipe_common.c

index a5678faf89b1faa3bac914bbe34f5afe48e509fb..b17bf80bf50f1e03cc0d04ad5773fb66a24a7531 100644 (file)
@@ -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);