diff options
Diffstat (limited to 'drivers/gpu/drm/vmwgfx/vmwgfx_shader.c')
-rw-r--r-- | drivers/gpu/drm/vmwgfx/vmwgfx_shader.c | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/drivers/gpu/drm/vmwgfx/vmwgfx_shader.c b/drivers/gpu/drm/vmwgfx/vmwgfx_shader.c index 76d354101403..813bd0a2abaf 100644 --- a/drivers/gpu/drm/vmwgfx/vmwgfx_shader.c +++ b/drivers/gpu/drm/vmwgfx/vmwgfx_shader.c @@ -257,6 +257,9 @@ static int vmw_gb_shader_destroy(struct vmw_resource *res) if (likely(res->id == -1)) return 0; + mutex_lock(&dev_priv->binding_mutex); + vmw_context_binding_res_list_kill(&res->binding_head); + cmd = vmw_fifo_reserve(dev_priv, sizeof(*cmd)); if (unlikely(cmd == NULL)) { DRM_ERROR("Failed reserving FIFO space for shader " @@ -268,6 +271,7 @@ static int vmw_gb_shader_destroy(struct vmw_resource *res) cmd->header.size = sizeof(cmd->body); cmd->body.shid = res->id; vmw_fifo_commit(dev_priv, sizeof(*cmd)); + mutex_unlock(&dev_priv->binding_mutex); vmw_resource_release_id(res); vmw_3d_resource_dec(dev_priv, false); |