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 at ti.com>
---
 drivers/gpu/drm/omapdrm/omap_gem.c | 11 ++++++++++-
 1 file changed, 10 insertions(+), 1 deletion(-)

diff --git a/drivers/gpu/drm/omapdrm/omap_gem.c 
b/drivers/gpu/drm/omapdrm/omap_gem.c
index 7098190815f1..a60c30a59f7e 100644
--- a/drivers/gpu/drm/omapdrm/omap_gem.c
+++ b/drivers/gpu/drm/omapdrm/omap_gem.c
@@ -775,9 +775,18 @@ 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, "omap_gem_dma_sync: 
dma_map_page failed\n");
+                                       break;
+                               }
+
                                dirty = true;
+                               omap_obj->addrs[i] = addr;
                        }
                }

-- 
2.5.0

Reply via email to