pvr: Fix overflow before widen warning for rgn headers size calculation.
authorKarmjit Mahil <Karmjit.Mahil@imgtec.com>
Fri, 14 Oct 2022 12:25:46 +0000 (13:25 +0100)
committerMarge Bot <emma+marge@anholt.net>
Wed, 19 Oct 2022 15:24:53 +0000 (15:24 +0000)
This fixes CID 1515968.

Signed-off-by: Karmjit Mahil <Karmjit.Mahil@imgtec.com>
Reviewed-by: Frank Binns <frank.binns@imgtec.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/19136>

src/imagination/vulkan/pvr_job_render.c

index 1526a4d..6649759 100644 (file)
@@ -587,8 +587,10 @@ static void pvr_rt_get_region_headers_stride_size(
    num_tiles_x = mtile_info->mtiles_x * mtile_info->tiles_per_mtile_x;
    num_tiles_y = mtile_info->mtiles_y * mtile_info->tiles_per_mtile_y;
 
-   rgn_headers_size =
-      (num_tiles_x / group_size) * (num_tiles_y / group_size) * rgn_header_size;
+   rgn_headers_size = (uint64_t)num_tiles_x / group_size;
+   /* Careful here. We want the division to happen first. */
+   rgn_headers_size *= num_tiles_y / group_size;
+   rgn_headers_size *= rgn_header_size;
 
    if (PVR_HAS_FEATURE(dev_info, simple_internal_parameter_format)) {
       rgn_headers_size =