From 71125139f1ee3012d6b75e80fab3876e3ba57973 Mon Sep 17 00:00:00 2001 From: Lionel Landwerlin Date: Mon, 5 Aug 2024 16:09:21 +0300 Subject: [PATCH] anv: reuse object string for RMV token The current code is not handling the potential NULL pointer in VkDebugUtilsObjectNameInfoEXT::pObjectName Signed-off-by: Lionel Landwerlin Fixes: e1b9a6e4f3 ("anv: initial RMV support") Reviewed-by: Faith Ekstrand Part-of: (cherry picked from commit c6bf1f02c4fbdf1d700cfe160e913e79c63944ed) --- .pick_status.json | 2 +- src/intel/vulkan/layers/anv_rmv_layer.c | 15 +++++---------- 2 files changed, 6 insertions(+), 11 deletions(-) diff --git a/.pick_status.json b/.pick_status.json index 23f158069e5..82905cb06de 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -4044,7 +4044,7 @@ "description": "anv: reuse object string for RMV token", "nominated": true, "nomination_type": 1, - "resolution": 0, + "resolution": 1, "main_sha": null, "because_sha": "e1b9a6e4f3c1702d68866bec2799b1216812595a", "notes": null diff --git a/src/intel/vulkan/layers/anv_rmv_layer.c b/src/intel/vulkan/layers/anv_rmv_layer.c index 2e36e5d4012..3b91da9c2d4 100644 --- a/src/intel/vulkan/layers/anv_rmv_layer.c +++ b/src/intel/vulkan/layers/anv_rmv_layer.c @@ -100,19 +100,14 @@ VkResult anv_rmv_SetDebugUtilsObjectNameEXT( return VK_SUCCESS; } - size_t name_len = strlen(pNameInfo->pObjectName); - char *name_buf = malloc(name_len + 1); - if (!name_buf) { - /* - * Silently fail, so that applications may still continue if possible. - */ - return VK_SUCCESS; - } - strcpy(name_buf, pNameInfo->pObjectName); + struct vk_object_base *object = + vk_object_base_from_u64_handle(pNameInfo->objectHandle, + pNameInfo->objectType); simple_mtx_lock(&device->vk.memory_trace_data.token_mtx); struct vk_rmv_userdata_token token; - token.name = name_buf; + token.name = vk_strdup(&device->vk.alloc, object->object_name, + VK_SYSTEM_ALLOCATION_SCOPE_DEVICE); token.resource_id = vk_rmv_get_resource_id_locked(&device->vk, pNameInfo->objectHandle); vk_rmv_emit_token(&device->vk.memory_trace_data, VK_RMV_TOKEN_TYPE_USERDATA, &token);