v3d: Early return with handle 0 when getting a bo on the simulator
authorAlejandro Piñeiro <apinheiro@igalia.com>
Thu, 4 Jul 2019 12:11:27 +0000 (14:11 +0200)
committerAlejandro Piñeiro <apinheiro@igalia.com>
Tue, 9 Jul 2019 06:40:35 +0000 (08:40 +0200)
Until now we were just asking entries on the bo hash table, and don't
worry if the handle was NULL, as we were just expecting to get a NULL
in return. It seems that now the hash table assert with some reserverd
pointers, included NULL. This commit just early returns with handle 0.

This change fixes several crashes on vk-gl-cts GLES tests when using
the v3d simulator, like:
KHR-GLES3.core.internalformat.copy_tex_image.*

Reviewed-by: Eric Anholt <eric@anholt.net>
src/gallium/drivers/v3d/v3d_simulator.c

index 6e2d25e9448f3c5d2916dc4b1cb9cde01079fdbd..039672d9ca2594e0475889c6bf30faac85f904a3 100644 (file)
@@ -289,6 +289,9 @@ v3d_free_simulator_bo(struct v3d_simulator_bo *sim_bo)
 static struct v3d_simulator_bo *
 v3d_get_simulator_bo(struct v3d_simulator_file *file, int gem_handle)
 {
+        if (gem_handle == 0)
+                return NULL;
+
         mtx_lock(&sim_state.mutex);
         struct hash_entry *entry =
                 _mesa_hash_table_search(file->bo_map, int_to_key(gem_handle));