diff options
Diffstat (limited to 'linux-core')
| -rw-r--r-- | linux-core/drm_bo.c | 3 | ||||
| -rw-r--r-- | linux-core/drm_object.c | 4 | ||||
| -rw-r--r-- | linux-core/drm_vm.c | 1 | 
3 files changed, 5 insertions, 3 deletions
| diff --git a/linux-core/drm_bo.c b/linux-core/drm_bo.c index 5f557d55..aa59238f 100644 --- a/linux-core/drm_bo.c +++ b/linux-core/drm_bo.c @@ -513,8 +513,11 @@ static int drm_buffer_object_unmap(drm_file_t * priv, uint32_t handle)  		goto out;  	} +	DRM_ERROR("Removing ref object\n");  	drm_remove_ref_object(priv, ro); +	DRM_ERROR("Deregistering usage\n");  	drm_bo_usage_deref_locked(dev, bo); +	DRM_ERROR("Done\n");        out:  	mutex_unlock(&dev->struct_mutex);  	return ret; diff --git a/linux-core/drm_object.c b/linux-core/drm_object.c index b928c01e..e1b79101 100644 --- a/linux-core/drm_object.c +++ b/linux-core/drm_object.c @@ -108,9 +108,6 @@ static int drm_object_ref_action(drm_file_t * priv, drm_user_object_t * ro,  		break;  	default:  		if (!ro->ref_struct_locked) { -			DRM_ERROR("Register object called without register" -				  " capabilities\n"); -			ret = -EINVAL;  			break;  		} else {  			ro->ref_struct_locked(priv, ro, action); @@ -164,6 +161,7 @@ int drm_add_ref_object(drm_file_t * priv, drm_user_object_t * referenced_object,  	atomic_set(&item->refcount, 1);  	item->hash.key = (unsigned long)referenced_object;  	ret = drm_ht_insert_item(ht, &item->hash); +	item->unref_action = ref_action;  	if (ret)  		goto out; diff --git a/linux-core/drm_vm.c b/linux-core/drm_vm.c index 7163341d..69391058 100644 --- a/linux-core/drm_vm.c +++ b/linux-core/drm_vm.c @@ -713,6 +713,7 @@ static void drm_vm_ttm_close(struct vm_area_struct *vma)  		dev = ttm->dev;  		mutex_lock(&dev->struct_mutex);  		drm_ttm_delete_mm(ttm, vma->vm_mm); +		list_del(&ttm_vma->head);  		drm_free(ttm_vma, sizeof(*ttm_vma), DRM_MEM_VMAS);  		if (atomic_dec_and_test(&ttm->vma_count)) {  			if (ttm->destroy) { | 
