diff options
Diffstat (limited to 'drivers/gpu/drm/omapdrm/omap_gem.c')
| -rw-r--r-- | drivers/gpu/drm/omapdrm/omap_gem.c | 14 | 
1 files changed, 4 insertions, 10 deletions
| diff --git a/drivers/gpu/drm/omapdrm/omap_gem.c b/drivers/gpu/drm/omapdrm/omap_gem.c index d0d12d5dd76c..f67f223c6479 100644 --- a/drivers/gpu/drm/omapdrm/omap_gem.c +++ b/drivers/gpu/drm/omapdrm/omap_gem.c @@ -1297,10 +1297,9 @@ struct drm_gem_object *omap_gem_new_dmabuf(struct drm_device *dev, size_t size,  		omap_obj->dma_addr = sg_dma_address(sgt->sgl);  	} else {  		/* Create pages list from sgt */ -		struct sg_page_iter iter;  		struct page **pages;  		unsigned int npages; -		unsigned int i = 0; +		unsigned int ret;  		npages = DIV_ROUND_UP(size, PAGE_SIZE);  		pages = kcalloc(npages, sizeof(*pages), GFP_KERNEL); @@ -1311,14 +1310,9 @@ struct drm_gem_object *omap_gem_new_dmabuf(struct drm_device *dev, size_t size,  		}  		omap_obj->pages = pages; - -		for_each_sg_page(sgt->sgl, &iter, sgt->orig_nents, 0) { -			pages[i++] = sg_page_iter_page(&iter); -			if (i > npages) -				break; -		} - -		if (WARN_ON(i != npages)) { +		ret = drm_prime_sg_to_page_addr_arrays(sgt, pages, NULL, +						       npages); +		if (ret) {  			omap_gem_free_object(obj);  			obj = ERR_PTR(-ENOMEM);  			goto done; | 
