i965: check tcs for NULL dereference
authorMark Janes <mark.a.janes@intel.com>
Fri, 13 May 2016 20:04:56 +0000 (13:04 -0700)
committerMark Janes <mark.a.janes@intel.com>
Mon, 16 May 2016 18:11:11 +0000 (11:11 -0700)
Coverity issue 1361544 found an instance where the tcs variable is
checked for NULL, but unconditionally dereferenced later in the same
function.

Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
src/mesa/drivers/dri/i965/brw_tcs.c

index e8178c6daab965255535d786f21daab384a6f216..9589fa5edeb7e0005b76e8d483e5287a06c70a50 100644 (file)
@@ -278,14 +278,16 @@ brw_codegen_tcs_prog(struct brw_context *brw,
 
    if (unlikely(brw->perf_debug)) {
       struct brw_shader *btcs = (struct brw_shader *) tcs;
-      if (btcs->compiled_once) {
-         brw_tcs_debug_recompile(brw, shader_prog, key);
+      if (btcs) {
+         if (btcs->compiled_once) {
+            brw_tcs_debug_recompile(brw, shader_prog, key);
+         }
+         btcs->compiled_once = true;
       }
       if (start_busy && !drm_intel_bo_busy(brw->batch.last_bo)) {
          perf_debug("TCS compile took %.03f ms and stalled the GPU\n",
                     (get_time() - start_time) * 1000);
       }
-      btcs->compiled_once = true;
    }
 
    /* Scratch space is used for register spilling */