drm/omap: use dma_mapping_error in omap_gem_attach_pages
omap_gem_attach_pages() calls dma_map_page() but does not check the possible error with dma_mapping_error(). If DMA-API debugging is enabled, the debug layer will give a warning if dma_mapping_error() has not been used. This patch adds proper error handling to omap_gem_attach_pages(). Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com> Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
This commit is contained in:
parent
5bcbab1766
commit
579ef2541b
@ -264,6 +264,19 @@ static int omap_gem_attach_pages(struct drm_gem_object *obj)
|
||||
for (i = 0; i < npages; i++) {
|
||||
addrs[i] = dma_map_page(dev->dev, pages[i],
|
||||
0, PAGE_SIZE, DMA_BIDIRECTIONAL);
|
||||
|
||||
if (dma_mapping_error(dev->dev, addrs[i])) {
|
||||
dev_warn(dev->dev,
|
||||
"%s: failed to map page\n", __func__);
|
||||
|
||||
for (i = i - 1; i >= 0; --i) {
|
||||
dma_unmap_page(dev->dev, addrs[i],
|
||||
PAGE_SIZE, DMA_BIDIRECTIONAL);
|
||||
}
|
||||
|
||||
ret = -ENOMEM;
|
||||
goto free_addrs;
|
||||
}
|
||||
}
|
||||
} else {
|
||||
addrs = kzalloc(npages * sizeof(*addrs), GFP_KERNEL);
|
||||
@ -278,6 +291,8 @@ static int omap_gem_attach_pages(struct drm_gem_object *obj)
|
||||
|
||||
return 0;
|
||||
|
||||
free_addrs:
|
||||
kfree(addrs);
|
||||
free_pages:
|
||||
drm_gem_put_pages(obj, pages, true, false);
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user