OSDN Git Service

drm/omap: use dma_mapping_error in omap_gem_dma_sync
authorTomi Valkeinen <tomi.valkeinen@ti.com>
Tue, 5 Jan 2016 09:43:15 +0000 (11:43 +0200)
committerTomi Valkeinen <tomi.valkeinen@ti.com>
Thu, 3 Mar 2016 15:36:41 +0000 (17:36 +0200)
omap_gem_dma_sync() 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_dma_sync().

Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
drivers/gpu/drm/omapdrm/omap_gem.c

index cb541d6..21989d3 100644 (file)
@@ -776,9 +776,20 @@ void omap_gem_dma_sync(struct drm_gem_object *obj,
 
                for (i = 0; i < npages; i++) {
                        if (!omap_obj->addrs[i]) {
-                               omap_obj->addrs[i] = dma_map_page(dev->dev, pages[i], 0,
+                               dma_addr_t addr;
+
+                               addr = dma_map_page(dev->dev, pages[i], 0,
                                                PAGE_SIZE, DMA_BIDIRECTIONAL);
+
+                               if (dma_mapping_error(dev->dev, addr)) {
+                                       dev_warn(dev->dev,
+                                               "%s: failed to map page\n",
+                                               __func__);
+                                       break;
+                               }
+
                                dirty = true;
+                               omap_obj->addrs[i] = addr;
                        }
                }