From d96d8ed910dcecf4511fbc8c24de292cf04ee1d4 Mon Sep 17 00:00:00 2001 From: Martin Andersson Date: Fri, 1 Mar 2013 22:34:28 +0100 Subject: [PATCH] winsys/radeon: Only add bo to hash table when creating flink The problem is that we mix bo handles and flinked names in the hash table. Because kms type handles are not flinked they should not be added to the hash table. If we do that we will sooner or later get a situation where we will overwrite a correct entry because the bo handle was the same as a flinked name. Note: this is a candidate for the stable branches. Reviewed-by: Jerome Glisse Signed-off-by: Alex Deucher --- src/gallium/winsys/radeon/drm/radeon_drm_bo.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/gallium/winsys/radeon/drm/radeon_drm_bo.c b/src/gallium/winsys/radeon/drm/radeon_drm_bo.c index 2d41c26..f4ac526 100644 --- a/src/gallium/winsys/radeon/drm/radeon_drm_bo.c +++ b/src/gallium/winsys/radeon/drm/radeon_drm_bo.c @@ -957,16 +957,16 @@ static boolean radeon_winsys_bo_get_handle(struct pb_buffer *buffer, bo->flinked = TRUE; bo->flink = flink.name; + + pipe_mutex_lock(bo->mgr->bo_handles_mutex); + util_hash_table_set(bo->mgr->bo_handles, (void*)(uintptr_t)bo->flink, bo); + pipe_mutex_unlock(bo->mgr->bo_handles_mutex); } whandle->handle = bo->flink; } else if (whandle->type == DRM_API_HANDLE_TYPE_KMS) { whandle->handle = bo->handle; } - pipe_mutex_lock(bo->mgr->bo_handles_mutex); - util_hash_table_set(bo->mgr->bo_handles, (void*)(uintptr_t)whandle->handle, bo); - pipe_mutex_unlock(bo->mgr->bo_handles_mutex); - whandle->stride = stride; return TRUE; } -- 2.7.4