Commit 8f4f9a3b authored by Thomas Hellström's avatar Thomas Hellström

drm/i915: Fix vma resource freeing

In some cases we use leftover kfree() instead of i915_vma_resource_free().
Fix this.

Fixes: 2f6b90da ("drm/i915: Use vma resources for async unbinding")
Reported-by: default avatarRobert Beckett <bob.beckett@collabora.com>
Cc: Matthew Auld <matthew.auld@intel.com>
Signed-off-by: default avatarThomas Hellström <thomas.hellstrom@linux.intel.com>
Reviewed-by: default avatarMatthew Auld <matthew.auld@intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20220119174734.213552-1-thomas.hellstrom@linux.intel.com
parent cec49bce
...@@ -463,7 +463,7 @@ int i915_vma_bind(struct i915_vma *vma, ...@@ -463,7 +463,7 @@ int i915_vma_bind(struct i915_vma *vma,
if (vma->resource || !vma_res) { if (vma->resource || !vma_res) {
/* Rebinding with an additional I915_VMA_*_BIND */ /* Rebinding with an additional I915_VMA_*_BIND */
GEM_WARN_ON(!vma_flags); GEM_WARN_ON(!vma_flags);
kfree(vma_res); i915_vma_resource_free(vma_res);
} else { } else {
i915_vma_resource_init_from_vma(vma_res, vma); i915_vma_resource_init_from_vma(vma_res, vma);
vma->resource = vma_res; vma->resource = vma_res;
...@@ -1406,7 +1406,7 @@ int i915_vma_pin_ww(struct i915_vma *vma, struct i915_gem_ww_ctx *ww, ...@@ -1406,7 +1406,7 @@ int i915_vma_pin_ww(struct i915_vma *vma, struct i915_gem_ww_ctx *ww,
err_unlock: err_unlock:
mutex_unlock(&vma->vm->mutex); mutex_unlock(&vma->vm->mutex);
err_vma_res: err_vma_res:
kfree(vma_res); i915_vma_resource_free(vma_res);
err_fence: err_fence:
if (work) if (work)
dma_fence_work_commit_imm(&work->base); dma_fence_work_commit_imm(&work->base);
......
...@@ -62,7 +62,8 @@ struct i915_vma_resource *i915_vma_resource_alloc(void) ...@@ -62,7 +62,8 @@ struct i915_vma_resource *i915_vma_resource_alloc(void)
*/ */
void i915_vma_resource_free(struct i915_vma_resource *vma_res) void i915_vma_resource_free(struct i915_vma_resource *vma_res)
{ {
kmem_cache_free(slab_vma_resources, vma_res); if (vma_res)
kmem_cache_free(slab_vma_resources, vma_res);
} }
static const char *get_driver_name(struct dma_fence *fence) static const char *get_driver_name(struct dma_fence *fence)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment