radv: Fix radv_shader_arena_block list corruption

Remove it from the previous list befor adding it to a new one.

cc: mesa-stable

Reviewed-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/28961>
(cherry picked from commit e050abc961)
This commit is contained in:
Konstantin Seurer 2024-04-28 15:54:32 +02:00 committed by Eric Engestrom
parent 42765877a9
commit 7e033ebcd5
2 changed files with 2 additions and 3 deletions

View file

@ -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

View file

@ -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;