diff options
Diffstat (limited to 'drivers/gpu/drm/ttm/ttm_tt.c')
| -rw-r--r-- | drivers/gpu/drm/ttm/ttm_tt.c | 18 | 
1 files changed, 11 insertions, 7 deletions
diff --git a/drivers/gpu/drm/ttm/ttm_tt.c b/drivers/gpu/drm/ttm/ttm_tt.c index e2123af7775..160c2745f8d 100644 --- a/drivers/gpu/drm/ttm/ttm_tt.c +++ b/drivers/gpu/drm/ttm/ttm_tt.c @@ -476,7 +476,7 @@ static int ttm_tt_swapin(struct ttm_tt *ttm)  	void *from_virtual;  	void *to_virtual;  	int i; -	int ret; +	int ret = -ENOMEM;  	if (ttm->page_flags & TTM_PAGE_FLAG_USER) {  		ret = ttm_tt_set_user(ttm, ttm->tsk, ttm->start, @@ -495,8 +495,10 @@ static int ttm_tt_swapin(struct ttm_tt *ttm)  	for (i = 0; i < ttm->num_pages; ++i) {  		from_page = read_mapping_page(swap_space, i, NULL); -		if (IS_ERR(from_page)) +		if (IS_ERR(from_page)) { +			ret = PTR_ERR(from_page);  			goto out_err; +		}  		to_page = __ttm_tt_get_page(ttm, i);  		if (unlikely(to_page == NULL))  			goto out_err; @@ -519,7 +521,7 @@ static int ttm_tt_swapin(struct ttm_tt *ttm)  	return 0;  out_err:  	ttm_tt_free_alloced_pages(ttm); -	return -ENOMEM; +	return ret;  }  int ttm_tt_swapout(struct ttm_tt *ttm, struct file *persistant_swap_storage) @@ -531,6 +533,7 @@ int ttm_tt_swapout(struct ttm_tt *ttm, struct file *persistant_swap_storage)  	void *from_virtual;  	void *to_virtual;  	int i; +	int ret = -ENOMEM;  	BUG_ON(ttm->state != tt_unbound && ttm->state != tt_unpopulated);  	BUG_ON(ttm->caching_state != tt_cached); @@ -553,7 +556,7 @@ int ttm_tt_swapout(struct ttm_tt *ttm, struct file *persistant_swap_storage)  						0);  		if (unlikely(IS_ERR(swap_storage))) {  			printk(KERN_ERR "Failed allocating swap storage.\n"); -			return -ENOMEM; +			return PTR_ERR(swap_storage);  		}  	} else  		swap_storage = persistant_swap_storage; @@ -565,9 +568,10 @@ int ttm_tt_swapout(struct ttm_tt *ttm, struct file *persistant_swap_storage)  		if (unlikely(from_page == NULL))  			continue;  		to_page = read_mapping_page(swap_space, i, NULL); -		if (unlikely(to_page == NULL)) +		if (unlikely(IS_ERR(to_page))) { +			ret = PTR_ERR(to_page);  			goto out_err; - +		}  		preempt_disable();  		from_virtual = kmap_atomic(from_page, KM_USER0);  		to_virtual = kmap_atomic(to_page, KM_USER1); @@ -591,5 +595,5 @@ out_err:  	if (!persistant_swap_storage)  		fput(swap_storage); -	return -ENOMEM; +	return ret;  }  |