From: Marek Olšák Date: Wed, 4 Jan 2017 10:42:13 +0000 (+0100) Subject: va: call texture_get_handle while the mutex is being held X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=89975e29d33d93021a303b2b41b56de65e854843;p=mesa.git va: call texture_get_handle while the mutex is being held The context may be used by texture_get_handle. Reviewed-by: Christian König Cc: 13.0 --- diff --git a/src/gallium/state_trackers/va/buffer.c b/src/gallium/state_trackers/va/buffer.c index 3c9b9d1a1e5..93f012c830f 100644 --- a/src/gallium/state_trackers/va/buffer.c +++ b/src/gallium/state_trackers/va/buffer.c @@ -297,15 +297,18 @@ vlVaAcquireBufferHandle(VADriverContextP ctx, VABufferID buf_id, pipe_mutex_lock(drv->mutex); drv->pipe->flush(drv->pipe, NULL, 0); - pipe_mutex_unlock(drv->mutex); memset(&whandle, 0, sizeof(whandle)); whandle.type = DRM_API_HANDLE_TYPE_FD; if (!screen->resource_get_handle(screen, drv->pipe, buf->derived_surface.resource, - &whandle, PIPE_HANDLE_USAGE_READ_WRITE)) + &whandle, PIPE_HANDLE_USAGE_READ_WRITE)) { + pipe_mutex_unlock(drv->mutex); return VA_STATUS_ERROR_INVALID_BUFFER; + } + + pipe_mutex_unlock(drv->mutex); buf_info->handle = (intptr_t)whandle.handle; break;