About Social Code
aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDmitry Osipenko <dmitry.osipenko@collabora.com>2024-10-15 22:20:55 +0300
committerMarge Bot <emma+marge@anholt.net>2024-10-25 18:06:14 +0000
commit5ec424c6bed98a69bf3e56d24af0393225077f44 (patch)
tree5d01a7f15dc7707b71fcdfec8ae199caf6a708d3
parent7b40d32187bbdd0cd8da75d4c626ea87dd14b4fb (diff)
util/mesa-db: Fix crash on compacting empty DB
Fix mesa_db_compact() segfaulting if compacted DB is empty. This crash happens on writing cache entry that is bigger than DB's size limit and when DB is empty, which can be triggered by setting DB size to a small value. Fixes: 32211788d053 ("util/disk_cache: Add new mesa-db cache type") Signed-off-by: Dmitry Osipenko <dmitry.osipenko@collabora.com> Acked-by: Timothy Arceri <tarceri@itsqueeze.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/30988>
-rw-r--r--src/util/mesa_cache_db.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/src/util/mesa_cache_db.c b/src/util/mesa_cache_db.c
index f7536ae4a86..4372051c839 100644
--- a/src/util/mesa_cache_db.c
+++ b/src/util/mesa_cache_db.c
@@ -614,6 +614,9 @@ mesa_db_compact(struct mesa_cache_db *db, int64_t blob_size,
return false;
num_entries = _mesa_hash_table_num_entries(db->index_db->table);
+ if (!num_entries)
+ return true;
+
entries = calloc(num_entries, sizeof(*entries));
if (!entries)
return false;