Hi Tomi, Thank you for the patch. On Thursday 18 June 2015 13:10:39 Tomi Valkeinen wrote: > If tiler_unpin() call in omap_gem_put_paddr() fails, > omap_gem_put_paddr() will immediately stop processing and return an > error. > > This patch remoes that error checking, and also removes > omap_gem_put_paddr()'s return value, because: > > * The caller of omap_gem_put_paddr() can do nothing if an error > happens, so it's pointless to return an error value > > * If tiler_unpin() fails, the GEM object will possibly be left in an > undefined state, where the DMM mapping may have been removed, but the > GEM object still thinks everything is as it should be, leading to > crashes later. > > * There's no point in returning an error from a "free" call, as the > caller can do nothing about it. So it's better to clean up as much as > possible. > > Signed-off-by: Tomi Valkeinen <tomi.valkeinen@xxxxxx> Acked-by: Laurent Pinchart <laurent.pinchart@xxxxxxxxxxxxxxxx> > --- > drivers/gpu/drm/omapdrm/omap_drv.h | 2 +- > drivers/gpu/drm/omapdrm/omap_gem.c | 8 +++----- > 2 files changed, 4 insertions(+), 6 deletions(-) > > diff --git a/drivers/gpu/drm/omapdrm/omap_drv.h > b/drivers/gpu/drm/omapdrm/omap_drv.h index 2ef89c0c3006..1ae8477e4289 > 100644 > --- a/drivers/gpu/drm/omapdrm/omap_drv.h > +++ b/drivers/gpu/drm/omapdrm/omap_drv.h > @@ -211,7 +211,7 @@ void omap_gem_dma_sync(struct drm_gem_object *obj, > enum dma_data_direction dir); > int omap_gem_get_paddr(struct drm_gem_object *obj, > dma_addr_t *paddr, bool remap); > -int omap_gem_put_paddr(struct drm_gem_object *obj); > +void omap_gem_put_paddr(struct drm_gem_object *obj); > int omap_gem_get_pages(struct drm_gem_object *obj, struct page ***pages, > bool remap); > int omap_gem_put_pages(struct drm_gem_object *obj); > diff --git a/drivers/gpu/drm/omapdrm/omap_gem.c > b/drivers/gpu/drm/omapdrm/omap_gem.c index 51c5635aff62..d01d40245298 > 100644 > --- a/drivers/gpu/drm/omapdrm/omap_gem.c > +++ b/drivers/gpu/drm/omapdrm/omap_gem.c > @@ -808,10 +808,10 @@ fail: > /* Release physical address, when DMA is no longer being performed.. this > * could potentially unpin and unmap buffers from TILER > */ > -int omap_gem_put_paddr(struct drm_gem_object *obj) > +void omap_gem_put_paddr(struct drm_gem_object *obj) > { > struct omap_gem_object *omap_obj = to_omap_bo(obj); > - int ret = 0; > + int ret; > > mutex_lock(&obj->dev->struct_mutex); > if (omap_obj->paddr_cnt > 0) { > @@ -821,7 +821,6 @@ int omap_gem_put_paddr(struct drm_gem_object *obj) > if (ret) { > dev_err(obj->dev->dev, > "could not unpin pages: %d\n", ret); > - goto fail; > } > ret = tiler_release(omap_obj->block); > if (ret) { > @@ -832,9 +831,8 @@ int omap_gem_put_paddr(struct drm_gem_object *obj) > omap_obj->block = NULL; > } > } > -fail: > + > mutex_unlock(&obj->dev->struct_mutex); > - return ret; > } > > /* Get rotated scanout address (only valid if already pinned), at the -- Regards, Laurent Pinchart _______________________________________________ dri-devel mailing list dri-devel@xxxxxxxxxxxxxxxxxxxxx http://lists.freedesktop.org/mailman/listinfo/dri-devel