etnaviv: Avoid shift overflow
authorJohn Stultz <john.stultz@linaro.org>
Thu, 12 Mar 2020 22:21:29 +0000 (22:21 +0000)
committerMarge Bot <eric+marge@anholt.net>
Thu, 19 Mar 2020 21:20:08 +0000 (21:20 +0000)
Building with AOSP I'm seeing:

external/mesa3d/src/gallium/drivers/etnaviv/etnaviv_screen.c:245:31: error: signed shift result (0x100000000) requires 34 bits to represent, but 'int' only has 32 bits [-Werror,-Wshift-overflow]
         system_memory = 4096 << 20;

system_memory is a uint_64t, so this patch addresses the issue
by casting 4096 to a unint_64t before the shift is done.

Reviewed-by: Christian Gmeiner <christian.gmeiner@gmail.com>
Signed-off-by: John Stultz <john.stultz@linaro.org>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4175>

src/gallium/drivers/etnaviv/etnaviv_screen.c

index d5fd35cbd77c80eb3f924d7681db22c5578dc40d..ad33790b427a5f630d780f9950bb6c112d687bb3 100644 (file)
@@ -243,7 +243,7 @@ etna_screen_get_param(struct pipe_screen *pscreen, enum pipe_cap param)
       uint64_t system_memory;
 
       if (!os_get_total_physical_memory(&system_memory))
-         system_memory = 4096 << 20;
+         system_memory = (uint64_t)4096 << 20;
 
       return MIN2(system_memory / 32, 64 * 1024 * 1024);
    }