summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorVinson Lee <vlee@freedesktop.org>2020-08-30 17:39:43 -0700
committerEric Engestrom <eric@engestrom.ch>2020-09-02 21:50:46 +0200
commit94bc5ae41075b5fdffe35c4c601f26f3d5d7c061 (patch)
tree9a4cfb5f7b5d2b0f1edfe97336131b4c3c7d69db
parentf963c22f064b13372b3c986c2506025d14c6519b (diff)
vulkan: Fix memory leaks.
Fix warnings reported by Coverity Scan. Resource leak (RESOURCE_LEAK) leaked_storage: Variable info going out of scope leaks the storage it points to. Fixes: 9bc5b2d169d3 ("vulkan: add initial device selection layer. (v6.1)") Signed-off-by: Vinson Lee <vlee@freedesktop.org> Reviewed-by: Dave Airlie <airlied@redhat.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/6509> (cherry picked from commit 004119d5b7d4b1679e6dd691e9ab2ab7d65f8516)
-rw-r--r--.pick_status.json2
-rw-r--r--src/vulkan/device-select-layer/device_select_layer.c5
2 files changed, 5 insertions, 2 deletions
diff --git a/.pick_status.json b/.pick_status.json
index d12adca6fe4..cc34162d0a6 100644
--- a/.pick_status.json
+++ b/.pick_status.json
@@ -895,7 +895,7 @@
"description": "vulkan: Fix memory leaks.",
"nominated": true,
"nomination_type": 1,
- "resolution": 0,
+ "resolution": 1,
"master_sha": null,
"because_sha": "9bc5b2d169d3a3c9d52fc30987eaba52e3b7dc00"
},
diff --git a/src/vulkan/device-select-layer/device_select_layer.c b/src/vulkan/device-select-layer/device_select_layer.c
index 7bec8890344..3a5981063c8 100644
--- a/src/vulkan/device-select-layer/device_select_layer.c
+++ b/src/vulkan/device-select-layer/device_select_layer.c
@@ -137,14 +137,17 @@ static VkResult device_select_CreateInstance(const VkInstanceCreateInfo *pCreate
PFN_vkCreateInstance fpCreateInstance =
(PFN_vkCreateInstance)info->GetInstanceProcAddr(NULL, "vkCreateInstance");
if (fpCreateInstance == NULL) {
+ free(info);
return VK_ERROR_INITIALIZATION_FAILED;
}
chain_info->u.pLayerInfo = chain_info->u.pLayerInfo->pNext;
VkResult result = fpCreateInstance(pCreateInfo, pAllocator, pInstance);
- if (result != VK_SUCCESS)
+ if (result != VK_SUCCESS) {
+ free(info);
return result;
+ }
for (unsigned i = 0; i < pCreateInfo->enabledExtensionCount; i++) {
if (!strcmp(pCreateInfo->ppEnabledExtensionNames[i], VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME))