mirror of
https://gitlab.freedesktop.org/mesa/drm.git
synced 2025-12-20 18:40:09 +01:00
Don't free object while information in them are used for accounting purposes.
Fix by Alan Hourihane.
This commit is contained in:
parent
2eb3922aa6
commit
72f10b46d4
3 changed files with 5 additions and 5 deletions
|
|
@ -70,8 +70,8 @@ static void ttm_bo_release_list(struct kref *list_kref)
|
||||||
if (bo->destroy)
|
if (bo->destroy)
|
||||||
bo->destroy(bo);
|
bo->destroy(bo);
|
||||||
else {
|
else {
|
||||||
kfree(bo);
|
|
||||||
ttm_mem_global_free(bdev->mem_glob, bo->acc_size, 0);
|
ttm_mem_global_free(bdev->mem_glob, bo->acc_size, 0);
|
||||||
|
kfree(bo);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -266,8 +266,8 @@ int ttm_ref_object_add(struct ttm_object_file *tfile,
|
||||||
write_unlock(&tfile->lock);
|
write_unlock(&tfile->lock);
|
||||||
BUG_ON(ret != -EINVAL);
|
BUG_ON(ret != -EINVAL);
|
||||||
|
|
||||||
kfree(ref);
|
|
||||||
ttm_mem_global_free(mem_glob, sizeof(*ref), 0);
|
ttm_mem_global_free(mem_glob, sizeof(*ref), 0);
|
||||||
|
kfree(ref);
|
||||||
}
|
}
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
|
|
@ -291,8 +291,8 @@ static void ttm_ref_object_release(struct kref *kref)
|
||||||
base->ref_obj_release(base, ref->ref_type);
|
base->ref_obj_release(base, ref->ref_type);
|
||||||
|
|
||||||
ttm_base_object_unref(&ref->obj);
|
ttm_base_object_unref(&ref->obj);
|
||||||
kfree(ref);
|
|
||||||
ttm_mem_global_free(mem_glob, sizeof(*ref), 0);
|
ttm_mem_global_free(mem_glob, sizeof(*ref), 0);
|
||||||
|
kfree(ref);
|
||||||
write_lock(&tfile->lock);
|
write_lock(&tfile->lock);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -97,8 +97,8 @@ static void ttm_bo_user_destroy(struct ttm_buffer_object *bo)
|
||||||
struct ttm_bo_user_object *user_bo =
|
struct ttm_bo_user_object *user_bo =
|
||||||
container_of(bo, struct ttm_bo_user_object, bo);
|
container_of(bo, struct ttm_bo_user_object, bo);
|
||||||
|
|
||||||
kfree(user_bo);
|
|
||||||
ttm_mem_global_free(bo->bdev->mem_glob, bo->acc_size, 0);
|
ttm_mem_global_free(bo->bdev->mem_glob, bo->acc_size, 0);
|
||||||
|
kfree(user_bo);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void ttm_bo_user_release(struct ttm_base_object **p_base)
|
static void ttm_bo_user_release(struct ttm_base_object **p_base)
|
||||||
|
|
@ -176,8 +176,8 @@ int ttm_pl_create_ioctl(struct ttm_object_file *tfile,
|
||||||
bo = &user_bo->bo;
|
bo = &user_bo->bo;
|
||||||
ret = ttm_read_lock(lock, true);
|
ret = ttm_read_lock(lock, true);
|
||||||
if (unlikely(ret != 0)) {
|
if (unlikely(ret != 0)) {
|
||||||
kfree(user_bo);
|
|
||||||
ttm_mem_global_free(mem_glob, acc_size, 0);
|
ttm_mem_global_free(mem_glob, acc_size, 0);
|
||||||
|
kfree(user_bo);
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue