i965: Use safer pointer arithmetic in gather_oa_results()
authorChad Versace <chad.versace@linux.intel.com>
Wed, 19 Nov 2014 05:11:26 +0000 (21:11 -0800)
committerChad Versace <chad.versace@intel.com>
Mon, 22 Dec 2014 21:47:14 +0000 (15:47 -0600)
This patch reduces the likelihood of pointer arithmetic overflow bugs in
gather_oa_results(), like the one fixed by b69c7c5dac.

I haven't yet encountered any overflow bugs in the wild along this
patch's codepath. But I get nervous when I see code patterns like this:

   (void*) + (int) * (int)

I smell 32-bit overflow all over this code.

This patch retypes 'snapshot_size' to 'ptrdiff_t', which should fix any
potential overflow.

Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
Signed-off-by: Chad Versace <chad.versace@linux.intel.com>
src/mesa/drivers/dri/i965/brw_performance_monitor.c

index edfa3d2ec2abb9f6a23ce97e3842b7518794a548..e683e40e55fc2a9089c4782bceb35fa38be1e9b9 100644 (file)
@@ -907,7 +907,7 @@ gather_oa_results(struct brw_context *brw,
       return;
    }
 
-   const int snapshot_size = brw->perfmon.entries_per_oa_snapshot;
+   const ptrdiff_t snapshot_size = brw->perfmon.entries_per_oa_snapshot;
 
    /* First, add the contributions from the "head" interval:
     * (snapshot taken at BeginPerfMonitor time,