radv: place pointer length into cache uuid
authorGrazvydas Ignotas <notasas@gmail.com>
Mon, 20 Aug 2018 21:08:54 +0000 (00:08 +0300)
committerGrazvydas Ignotas <notasas@gmail.com>
Wed, 22 Aug 2018 21:34:32 +0000 (00:34 +0300)
Thanks to reproducible builds, binary file timestamps may be identical
for both 32bit and 64bit packages when built from the same source.
This means radv will use the same cache for both 32 and 64 bit
processes, which leads to crashes.

Conveniently there is a spare byte in cache_uuid, let's place the
pointer size there.

Fixes: f4e499ec79 "radv: add initial non-conformant radv vulkan driver"
CC: 18.1 18.2 <mesa-stable@lists.freedesktop.org>
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=107601
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=105904
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
src/amd/vulkan/radv_device.c

index cc88abb57a897f7a6758761e2fe761495ddae9d5..79dbbd886d51fca21f4ce99c45d441a1c7a95a2e 100644 (file)
@@ -60,7 +60,7 @@ radv_device_get_cache_uuid(enum radeon_family family, void *uuid)
        memcpy(uuid, &mesa_timestamp, 4);
        memcpy((char*)uuid + 4, &llvm_timestamp, 4);
        memcpy((char*)uuid + 8, &f, 2);
-       snprintf((char*)uuid + 10, VK_UUID_SIZE - 10, "radv");
+       snprintf((char*)uuid + 10, VK_UUID_SIZE - 10, "radv%zd", sizeof(void *));
        return 0;
 }