From: Christian Gmeiner Date: Wed, 8 Feb 2017 12:07:25 +0000 (+0100) Subject: etnaviv: move pctx initialisation to avoid a null dereference X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=a0b16a08905d68da07668a42eeb464b4f30bf3e5;p=mesa.git etnaviv: move pctx initialisation to avoid a null dereference In case ctx->stream == NULL the fail label gets executed where pctx gets dereferenced - too bad pctx is NULL in that case. Caught by Coverity, reported to me by imirkin. Cc: "17.0" Signed-off-by: Christian Gmeiner Reviewed-by: Eric Engestrom --- diff --git a/src/gallium/drivers/etnaviv/etnaviv_context.c b/src/gallium/drivers/etnaviv/etnaviv_context.c index 62297a05047..5566e0ed38e 100644 --- a/src/gallium/drivers/etnaviv/etnaviv_context.c +++ b/src/gallium/drivers/etnaviv/etnaviv_context.c @@ -267,16 +267,11 @@ etna_context_create(struct pipe_screen *pscreen, void *priv, unsigned flags) { struct etna_context *ctx = CALLOC_STRUCT(etna_context); struct etna_screen *screen; - struct pipe_context *pctx = NULL; + struct pipe_context *pctx; if (ctx == NULL) return NULL; - screen = etna_screen(pscreen); - ctx->stream = etna_cmd_stream_new(screen->pipe, 0x2000, &etna_cmd_stream_reset_notify, ctx); - if (ctx->stream == NULL) - goto fail; - pctx = &ctx->base; pctx->priv = ctx; pctx->screen = pscreen; @@ -285,6 +280,11 @@ etna_context_create(struct pipe_screen *pscreen, void *priv, unsigned flags) goto fail; pctx->const_uploader = pctx->stream_uploader; + screen = etna_screen(pscreen); + ctx->stream = etna_cmd_stream_new(screen->pipe, 0x2000, &etna_cmd_stream_reset_notify, ctx); + if (ctx->stream == NULL) + goto fail; + /* context ctxate setup */ ctx->specs = screen->specs; ctx->screen = screen;