[Mesa-dev] [PATCH] anv: avoid segmentation fault due to vk_error()

Tapani Pälli tapani.palli at intel.com
Fri Jan 19 08:23:39 UTC 2018


Reviewed-by: Tapani Pälli <tapani.palli at intel.com>

(Fixes e5b1bd6ab8)

On 01/19/2018 09:59 AM, Samuel Iglesias Gonsálvez wrote:
> 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.
> 
> Signed-off-by: Samuel Iglesias Gonsálvez <siglesias at igalia.com>
> ---
>   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 6b31224d7f1..3c1803aa056 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);
>   
> 


More information about the mesa-dev mailing list