drm/i915: Fix vma resource freeing

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

Fixes: 2f6b90da9192 ("drm/i915: Use vma resources for async unbinding")
Reported-by: Robert Beckett <bob.beckett@collabora.com>
Cc: Matthew Auld <matthew.auld@intel.com>
Signed-off-by: Thomas Hellström <thomas.hellstrom@linux.intel.com>
Reviewed-by: Matthew Auld <matthew.auld@intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20220119174734.213552-1-thomas.hellstrom@linux.intel.com
This commit is contained in:
Thomas Hellström 2022-01-19 18:47:34 +01:00
parent cec49bce6e
commit 8f4f9a3b3a
2 changed files with 4 additions and 3 deletions

View File

@ -463,7 +463,7 @@ int i915_vma_bind(struct i915_vma *vma,
if (vma->resource || !vma_res) {
/* Rebinding with an additional I915_VMA_*_BIND */
GEM_WARN_ON(!vma_flags);
kfree(vma_res);
i915_vma_resource_free(vma_res);
} else {
i915_vma_resource_init_from_vma(vma_res, vma);
vma->resource = vma_res;
@ -1406,7 +1406,7 @@ err_active:
err_unlock:
mutex_unlock(&vma->vm->mutex);
err_vma_res:
kfree(vma_res);
i915_vma_resource_free(vma_res);
err_fence:
if (work)
dma_fence_work_commit_imm(&work->base);

View File

@ -62,7 +62,8 @@ struct i915_vma_resource *i915_vma_resource_alloc(void)
*/
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)