diff --git a/.pick_status.json b/.pick_status.json index e50a77b5320..8a62f527eec 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -114,7 +114,7 @@ "description": "radv: Fix radv_shader_arena_block list corruption", "nominated": true, "nomination_type": 0, - "resolution": 0, + "resolution": 1, "main_sha": null, "because_sha": null, "notes": null diff --git a/src/amd/vulkan/radv_shader.c b/src/amd/vulkan/radv_shader.c index e4df3864c5f..6591f1a1f29 100644 --- a/src/amd/vulkan/radv_shader.c +++ b/src/amd/vulkan/radv_shader.c @@ -982,6 +982,7 @@ alloc_block_obj(struct radv_device *device) static void free_block_obj(struct radv_device *device, union radv_shader_arena_block *block) { + list_del(&block->pool); list_add(&block->pool, &device->shader_block_obj_pool); } @@ -1267,7 +1268,6 @@ radv_free_shader_memory(struct radv_device *device, union radv_shader_arena_bloc remove_hole(free_list, hole_prev); hole_prev->size += hole->size; - list_del(&hole->list); free_block_obj(device, hole); hole = hole_prev; @@ -1280,7 +1280,6 @@ radv_free_shader_memory(struct radv_device *device, union radv_shader_arena_bloc hole_next->offset -= hole->size; hole_next->size += hole->size; - list_del(&hole->list); free_block_obj(device, hole); hole = hole_next;