Hi Tomi, Thank you for the patch. On Friday 19 February 2016 11:47:46 Tomi Valkeinen wrote: > 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@xxxxxx> > --- > drivers/gpu/drm/omapdrm/omap_gem.c | 14 ++++++++++++++ > 1 file changed, 14 insertions(+) > > diff --git a/drivers/gpu/drm/omapdrm/omap_gem.c > b/drivers/gpu/drm/omapdrm/omap_gem.c index 8495a1a4b617..7098190815f1 > 100644 > --- a/drivers/gpu/drm/omapdrm/omap_gem.c > +++ b/drivers/gpu/drm/omapdrm/omap_gem.c > @@ -264,6 +264,18 @@ 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, "omap_gem_attach_pages: dma_map_page failed\n"); Using dev_warn(dev->dev, "%s: failed to map page\n", __func__); and proper line breaks you'll have no trouble complying with the 80 characters per line limit :-) > + > + for (i = i - 1; i >= 0; --i) { Maybe i-- instead of i = i - 1 ? > + dma_unmap_page(dev->dev, addrs[i], > + PAGE_SIZE, DMA_BIDIRECTIONAL); > + } > + > + ret = -ENOMEM; > + goto free_addrs; > + } > } > } else { > addrs = kzalloc(npages * sizeof(*addrs), GFP_KERNEL); > @@ -277,6 +289,8 @@ static int omap_gem_attach_pages(struct drm_gem_object > *obj) omap_obj->pages = pages; > > return 0; > +free_addrs: > + kfree(addrs); > I'd move this blank line before free_addrs. > free_pages: > drm_gem_put_pages(obj, pages, true, false); -- Regards, Laurent Pinchart _______________________________________________ dri-devel mailing list dri-devel@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/dri-devel