From ffbb9de588cbf517cc8210abc76ea4ee277791d1 Mon Sep 17 00:00:00 2001 From: Dmitry Osipenko Date: Tue, 15 Oct 2024 22:20:55 +0300 Subject: [PATCH] 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 Acked-by: Timothy Arceri Part-of: (cherry picked from commit 5ec424c6bed98a69bf3e56d24af0393225077f44) --- .pick_status.json | 2 +- src/util/mesa_cache_db.c | 3 +++ 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/.pick_status.json b/.pick_status.json index d9680cb9c7e..117c24ee23e 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -524,7 +524,7 @@ "description": "util/mesa-db: Fix crash on compacting empty DB", "nominated": true, "nomination_type": 1, - "resolution": 0, + "resolution": 1, "main_sha": null, "because_sha": "32211788d05311d1a92863e5445b56a5175ad4a0", "notes": null diff --git a/src/util/mesa_cache_db.c b/src/util/mesa_cache_db.c index 8925de6692f..05d9f4c93f8 100644 --- a/src/util/mesa_cache_db.c +++ b/src/util/mesa_cache_db.c @@ -524,6 +524,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;