From 89975e29d33d93021a303b2b41b56de65e854843 Mon Sep 17 00:00:00 2001 From: Marek Olšák Date: Wed, 4 Jan 2017 11:42:13 +0100 Subject: va: call texture_get_handle while the mutex is being held MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The context may be used by texture_get_handle. Reviewed-by: Christian König Cc: 13.0 --- src/gallium/state_trackers/va/buffer.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) (limited to 'src') 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; -- cgit v1.2.3