radeonsi: Fix resource leak in gs_copy_shader allocation failure path
authorGwan-gyeong Mun <elongbug@gmail.com>
Sun, 20 Nov 2016 04:19:57 +0000 (13:19 +0900)
committerEdward O'Callaghan <eocallaghan@oxyoptia.com>
Mon, 21 Nov 2016 13:04:59 +0000 (00:04 +1100)
CID 1394028

Signed-off-by: Mun Gwan-gyeong <elongbug@gmail.com>
Reviewed-by: Edward O'Callaghan <funfunctor@folklore1984.net>
Reviewed-by: Marek Olšák <marek.olsak@amd.com>
Reviewed-by: Nicolai Hähnle <nicolai.haehnle@amd.com>
src/gallium/drivers/radeonsi/si_shader.c

index 917e148429988fdd10b0c207e4e04f66a2ef0476..608cb72744966d213cc0dcef482d9913431cbdf3 100644 (file)
@@ -6137,9 +6137,15 @@ si_generate_gs_copy_shader(struct si_screen *sscreen,
 
        outputs = MALLOC(gsinfo->num_outputs * sizeof(outputs[0]));
 
+       if (!outputs)
+               return NULL;
+
        shader = CALLOC_STRUCT(si_shader);
-       if (!shader)
+       if (!shader) {
+               FREE(outputs);
                return NULL;
+       }
+
 
        shader->selector = gs_selector;
        shader->is_gs_copy_shader = true;