[PATCH 11/33] drm/omap: use dma_mapping_error in omap_gem_attach_pages

Laurent Pinchart laurent.pinchart at ideasonboard.com
Fri Feb 26 08:52:49 UTC 2016


Hi Tomi,

On Thursday 25 February 2016 17:39:35 Tomi Valkeinen wrote:
> On 24/02/16 00:10, Laurent Pinchart wrote:
> > 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 at ti.com>
> >> ---
> >> 
> >>  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 :-)
> 
> Ok.
> 
> >> +
> >> +				for (i = i - 1; i >= 0; --i) {
> > 
> > Maybe i-- instead of i = i - 1 ?
> 
> Hmm I don't know... I do like assignment in the initializer more than
> i--. And why i--? Why not --i? =)

--i is fine with me too ;-) Or maybe

	while (i--)
		dma_unmap_page(dev->dev, addrs[i],
					 PAGE_SIZE, DMA_BIDIRECTIONAL);

> >> +					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.
> 
> Yes, that makes it cleaner.

-- 
Regards,

Laurent Pinchart



More information about the dri-devel mailing list