From 2eab5ef751d7e9caabd7df171cdbb5e784059998 Mon Sep 17 00:00:00 2001 From: Chris Wilson Date: Sun, 30 Sep 2012 08:49:34 +0100 Subject: [PATCH] sna: Make sure the CPU bo is destroyed if we fail to mmap it during alloc Signed-off-by: Chris Wilson --- src/sna/sna_accel.c | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/src/sna/sna_accel.c b/src/sna/sna_accel.c index 7f64741a..7001eb87 100644 --- a/src/sna/sna_accel.c +++ b/src/sna/sna_accel.c @@ -435,15 +435,19 @@ sna_pixmap_alloc_cpu(struct sna *sna, pixmap->drawable.bitsPerPixel, from_gpu ? 0 : CREATE_CPU_MAP | CREATE_INACTIVE); if (priv->cpu_bo) { - DBG(("%s: allocated CPU handle=%d (snooped? %d)\n", __FUNCTION__, - priv->cpu_bo->handle, priv->cpu_bo->snoop)); - priv->ptr = kgem_bo_map__cpu(&sna->kgem, priv->cpu_bo); priv->stride = priv->cpu_bo->pitch; + if (priv->ptr) { + DBG(("%s: allocated CPU handle=%d (snooped? %d)\n", __FUNCTION__, + priv->cpu_bo->handle, priv->cpu_bo->snoop)); #ifdef DEBUG_MEMORY - sna->debug_memory.cpu_bo_allocs++; - sna->debug_memory.cpu_bo_bytes += kgem_bo_size(priv->cpu_bo); + sna->debug_memory.cpu_bo_allocs++; + sna->debug_memory.cpu_bo_bytes += kgem_bo_size(priv->cpu_bo); + } else { + kgem_bo_destroy(&sna->kgem, priv->cpu_bo); + priv->cpu_bo = NULL; #endif + } } }