diff --git a/.pick_status.json b/.pick_status.json index 27c776f020b..758d3850a4c 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -24,7 +24,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 c840953f56d..692e81a668d 100644 --- a/src/amd/vulkan/radv_shader.c +++ b/src/amd/vulkan/radv_shader.c @@ -906,6 +906,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); } @@ -1196,7 +1197,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; @@ -1209,7 +1209,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;