summaryrefslogtreecommitdiff
path: root/shared-core/nouveau_fifo.c
diff options
context:
space:
mode:
authorStephane Marchesin <marchesin@icps.u-strasbg.fr>2006-11-21 23:32:58 +0100
committerStephane Marchesin <marchesin@icps.u-strasbg.fr>2006-11-21 23:32:58 +0100
commit0a364be289c27c81a1d157c94291bdf60b43299e (patch)
tree208513602361258ec213891a80ba87f35385dd9c /shared-core/nouveau_fifo.c
parent5e7f58474dbc766632a71c3eb556e24ead6c6afc (diff)
parentadf71cb29b72b7d199f737b7b00eb7e80939ea4b (diff)
Merge branch 'nouveau-1' of git+ssh://marcheu@git.freedesktop.org/git/mesa/drm into nouveau-1
Diffstat (limited to 'shared-core/nouveau_fifo.c')
-rw-r--r--shared-core/nouveau_fifo.c8
1 files changed, 6 insertions, 2 deletions
diff --git a/shared-core/nouveau_fifo.c b/shared-core/nouveau_fifo.c
index c662165b..b6fc613c 100644
--- a/shared-core/nouveau_fifo.c
+++ b/shared-core/nouveau_fifo.c
@@ -403,6 +403,10 @@ static int nouveau_fifo_alloc(drm_device_t* dev,drm_nouveau_fifo_alloc_t* init,
NV_DMA_ACCESS_RO,
NV_DMA_TARGET_VIDMEM);
}
+ if (!cb_obj) {
+ DRM_ERROR("unable to alloc object for command buffer\n");
+ return DRM_ERR(EINVAL);
+ }
dev_priv->fifos[i].cmdbuf_obj = cb_obj;
/* that fifo is used */
@@ -536,7 +540,7 @@ void nouveau_fifo_cleanup(drm_device_t* dev, DRMFILE filp)
DRM_DEBUG("clearing FIFO enables from filp\n");
for(i=0;i<nouveau_fifo_number(dev);i++)
- if (dev_priv->fifos[i].filp==filp)
+ if (dev_priv->fifos[i].used && dev_priv->fifos[i].filp==filp)
nouveau_fifo_free(dev,i);
/* check we still point at an active channel */
@@ -560,7 +564,7 @@ int nouveau_fifo_id_get(drm_device_t* dev, DRMFILE filp)
int i;
for(i=0;i<nouveau_fifo_number(dev);i++)
- if (dev_priv->fifos[i].filp == filp)
+ if (dev_priv->fifos[i].used && dev_priv->fifos[i].filp == filp)
return i;
return -1;
}