From: Timothy Arceri Date: Wed, 19 Sep 2018 22:54:32 +0000 (+1000) Subject: util: disable cache if we have no build-id and timestamp is zero X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=ea66bfda8801a0f5139c8e4655373117cdd7a1c0;p=mesa.git util: disable cache if we have no build-id and timestamp is zero Timestamp can be zero for example when Flatpak is used. In this case just disable the cache rather then segfaulting when incompatible cache items are loaded. V2: actually return false when mtime is 0. Reviewed-by: Bas Nieuwenhuizen --- diff --git a/src/amd/vulkan/radv_device.c b/src/amd/vulkan/radv_device.c index 3e0d75bb1b6..429d47325a3 100644 --- a/src/amd/vulkan/radv_device.c +++ b/src/amd/vulkan/radv_device.c @@ -61,10 +61,6 @@ radv_get_build_id(void *ptr, struct mesa_sha1 *ctx) } else #endif if (disk_cache_get_function_timestamp(ptr, ×tamp)) { - if (!timestamp) { - fprintf(stderr, "radv: The provided filesystem timestamp for the cache is bogus!\n"); - } - _mesa_sha1_update(ctx, ×tamp, sizeof(timestamp)); } else return false; diff --git a/src/util/disk_cache.h b/src/util/disk_cache.h index 50bd9f41ac4..c8685a53ed3 100644 --- a/src/util/disk_cache.h +++ b/src/util/disk_cache.h @@ -26,6 +26,7 @@ #ifdef HAVE_DLFCN_H #include +#include #endif #include #include @@ -100,7 +101,15 @@ disk_cache_get_function_timestamp(void *ptr, uint32_t* timestamp) if (stat(info.dli_fname, &st)) { return false; } + + if (!st.st_mtime) { + fprintf(stderr, "Mesa: The provided filesystem timestamp for the cache " + "is bogus! Disabling On-disk cache.\n"); + return false; + } + *timestamp = st.st_mtime; + return true; } #endif