dri-devel.lists.freedesktop.org archive mirror
 help / color / mirror / Atom feed
* [PATCH v2 1/3] drm/etnaviv: fix get pages error path in etnaviv_gem_vaddr
@ 2016-01-26 17:48 Lucas Stach
  2016-01-26 17:48 ` [PATCH v2 2/3] drm/etnaviv: rename etnaviv_gem_vaddr to etnaviv_gem_vmap Lucas Stach
  2016-01-26 17:48 ` [PATCH v2 3/3] drm/etnaviv: call correct function when trying to vmap a DMABUF Lucas Stach
  0 siblings, 2 replies; 3+ messages in thread
From: Lucas Stach @ 2016-01-26 17:48 UTC (permalink / raw)
  To: Russell King, Christian Gmeiner, dri-devel

In case that etnaviv_gem_get_pages is unable to get the required
pages the object mutex needs to be unlocked. Also return NULL in
this case instead of propagating the error, as callers of this
function might not be prepared to handle a pointer error, but
expect this call to follow the semantics of a plain vmap to return
NULL in case of an error.

Signed-off-by: Lucas Stach <l.stach@pengutronix.de>
---
 drivers/gpu/drm/etnaviv/etnaviv_dump.c | 2 +-
 drivers/gpu/drm/etnaviv/etnaviv_gem.c  | 6 ++++--
 2 files changed, 5 insertions(+), 3 deletions(-)

diff --git a/drivers/gpu/drm/etnaviv/etnaviv_dump.c b/drivers/gpu/drm/etnaviv/etnaviv_dump.c
index fd7d3e989e79..09a759e69dd2 100644
--- a/drivers/gpu/drm/etnaviv/etnaviv_dump.c
+++ b/drivers/gpu/drm/etnaviv/etnaviv_dump.c
@@ -216,7 +216,7 @@ void etnaviv_core_dump(struct etnaviv_gpu *gpu)
 		iter.hdr->iova = cpu_to_le64(vram->iova);
 
 		vaddr = etnaviv_gem_vaddr(&obj->base);
-		if (vaddr && !IS_ERR(vaddr))
+		if (vaddr)
 			memcpy(iter.data, vaddr, obj->base.size);
 
 		etnaviv_core_dump_header(&iter, ETDUMP_BUF_BO, iter.data +
diff --git a/drivers/gpu/drm/etnaviv/etnaviv_gem.c b/drivers/gpu/drm/etnaviv/etnaviv_gem.c
index 9f77c3b94cc6..b22712fdd31e 100644
--- a/drivers/gpu/drm/etnaviv/etnaviv_gem.c
+++ b/drivers/gpu/drm/etnaviv/etnaviv_gem.c
@@ -361,8 +361,10 @@ void *etnaviv_gem_vaddr(struct drm_gem_object *obj)
 	if (!etnaviv_obj->vaddr) {
 		struct page **pages = etnaviv_gem_get_pages(etnaviv_obj);
 
-		if (IS_ERR(pages))
-			return ERR_CAST(pages);
+		if (IS_ERR(pages)) {
+			mutex_unlock(&etnaviv_obj->lock);
+			return NULL;
+		}
 
 		etnaviv_obj->vaddr = vmap(pages, obj->size >> PAGE_SHIFT,
 				VM_MAP, pgprot_writecombine(PAGE_KERNEL));
-- 
2.7.0.rc3

_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/dri-devel

^ permalink raw reply related	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2016-01-26 17:48 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2016-01-26 17:48 [PATCH v2 1/3] drm/etnaviv: fix get pages error path in etnaviv_gem_vaddr Lucas Stach
2016-01-26 17:48 ` [PATCH v2 2/3] drm/etnaviv: rename etnaviv_gem_vaddr to etnaviv_gem_vmap Lucas Stach
2016-01-26 17:48 ` [PATCH v2 3/3] drm/etnaviv: call correct function when trying to vmap a DMABUF Lucas Stach

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).