From 7109a1fe132e5f79a25bb34f0f28a21cce3076db Mon Sep 17 00:00:00 2001 From: =?utf8?q?Samuel=20Iglesias=20Gons=C3=A1lvez?= Date: Fri, 19 Jan 2018 08:45:10 +0100 Subject: [PATCH] anv: avoid segmentation fault due to vk_error() MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit vk_error() is a macro that calls __vk_errorf() with instance == NULL. Then, __vk_errorf() passes a pointer to instance->debug_report_callbacks to vk_debug_error(), which segfaults as this pointer is invalid but not NULL. Fixes: e5b1bd6ab8 "vulkan: move anv VK_EXT_debug_report implementation to common code." Signed-off-by: Samuel Iglesias Gonsálvez Reviewed-by: Tapani Pälli --- src/intel/vulkan/anv_util.c | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/src/intel/vulkan/anv_util.c b/src/intel/vulkan/anv_util.c index 6b31224..3c1803a 100644 --- a/src/intel/vulkan/anv_util.c +++ b/src/intel/vulkan/anv_util.c @@ -99,14 +99,16 @@ __vk_errorf(struct anv_instance *instance, const void *object, snprintf(report, sizeof(report), "%s:%d: %s", file, line, error_str); } - vk_debug_report(&instance->debug_report_callbacks, - VK_DEBUG_REPORT_ERROR_BIT_EXT, - type, - (uint64_t) (uintptr_t) object, - line, - 0, - "anv", - report); + if (instance) { + vk_debug_report(&instance->debug_report_callbacks, + VK_DEBUG_REPORT_ERROR_BIT_EXT, + type, + (uint64_t) (uintptr_t) object, + line, + 0, + "anv", + report); + } intel_loge("%s", report); -- 2.7.4