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@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.