diff options
author | Stephane Marchesin <marchesin@icps.u-strasbg.fr> | 2006-11-21 23:32:58 +0100 |
---|---|---|
committer | Stephane Marchesin <marchesin@icps.u-strasbg.fr> | 2006-11-21 23:32:58 +0100 |
commit | 0a364be289c27c81a1d157c94291bdf60b43299e (patch) | |
tree | 208513602361258ec213891a80ba87f35385dd9c /shared-core/nouveau_fifo.c | |
parent | 5e7f58474dbc766632a71c3eb556e24ead6c6afc (diff) | |
parent | adf71cb29b72b7d199f737b7b00eb7e80939ea4b (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.c | 8 |
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; } |