Check for NULL map before calling DRM(ioremapfree) on cleanup. Prevents an
authorLeif Delgass <ldelgass@users.sourceforge.net>
Mon, 21 Apr 2003 16:07:17 +0000 (16:07 +0000)
committerLeif Delgass <ldelgass@users.sourceforge.net>
Mon, 21 Apr 2003 16:07:17 +0000 (16:07 +0000)
    oops if a map wasn't found (e.g. XFree86 Bugzilla #108)

linux-core/i810_dma.c
linux-core/i830_dma.c
linux/gamma_dma.c
linux/i810_dma.c
linux/i830_dma.c
shared-core/mga_dma.c
shared-core/r128_cce.c
shared-core/radeon_cp.c
shared/mga_dma.c
shared/r128_cce.c
shared/radeon_cp.c

index b0a1b6a..c06fd91 100644 (file)
@@ -263,7 +263,8 @@ static int i810_dma_cleanup(drm_device_t *dev)
                for (i = 0; i < dma->buf_count; i++) {
                        drm_buf_t *buf = dma->buflist[ i ];
                        drm_i810_buf_priv_t *buf_priv = buf->dev_private;
-                       DRM(ioremapfree)(buf_priv->kernel_virtual, buf->total);
+                       if ( buf_priv->kernel_virtual && buf->total )
+                               DRM(ioremapfree)(buf_priv->kernel_virtual, buf->total);
                }
        }
        return 0;
index 1018fdc..b76d2b1 100644 (file)
@@ -280,7 +280,8 @@ static int i830_dma_cleanup(drm_device_t *dev)
                for (i = 0; i < dma->buf_count; i++) {
                        drm_buf_t *buf = dma->buflist[ i ];
                        drm_i830_buf_priv_t *buf_priv = buf->dev_private;
-                       DRM(ioremapfree)(buf_priv->kernel_virtual, buf->total);
+                       if ( buf_priv->kernel_virtual && buf->total )
+                               DRM(ioremapfree)(buf_priv->kernel_virtual, buf->total);
                }
        }
        return 0;
index 6734f1c..cf25aab 100644 (file)
@@ -673,7 +673,8 @@ int gamma_do_cleanup_dma( drm_device_t *dev )
        if ( dev->dev_private ) {
                drm_gamma_private_t *dev_priv = dev->dev_private;
 
-               DRM_IOREMAPFREE( dev_priv->buffers );
+               if ( dev_priv->buffers != NULL )
+                       DRM_IOREMAPFREE( dev_priv->buffers );
 
                DRM(free)( dev->dev_private, sizeof(drm_gamma_private_t),
                           DRM_MEM_DRIVER );
index b0a1b6a..c06fd91 100644 (file)
@@ -263,7 +263,8 @@ static int i810_dma_cleanup(drm_device_t *dev)
                for (i = 0; i < dma->buf_count; i++) {
                        drm_buf_t *buf = dma->buflist[ i ];
                        drm_i810_buf_priv_t *buf_priv = buf->dev_private;
-                       DRM(ioremapfree)(buf_priv->kernel_virtual, buf->total);
+                       if ( buf_priv->kernel_virtual && buf->total )
+                               DRM(ioremapfree)(buf_priv->kernel_virtual, buf->total);
                }
        }
        return 0;
index 1018fdc..b76d2b1 100644 (file)
@@ -280,7 +280,8 @@ static int i830_dma_cleanup(drm_device_t *dev)
                for (i = 0; i < dma->buf_count; i++) {
                        drm_buf_t *buf = dma->buflist[ i ];
                        drm_i830_buf_priv_t *buf_priv = buf->dev_private;
-                       DRM(ioremapfree)(buf_priv->kernel_virtual, buf->total);
+                       if ( buf_priv->kernel_virtual && buf->total )
+                               DRM(ioremapfree)(buf_priv->kernel_virtual, buf->total);
                }
        }
        return 0;
index 5e95c9f..96fd97f 100644 (file)
@@ -642,9 +642,12 @@ int mga_do_cleanup_dma( drm_device_t *dev )
        if ( dev->dev_private ) {
                drm_mga_private_t *dev_priv = dev->dev_private;
 
-               DRM_IOREMAPFREE( dev_priv->warp );
-               DRM_IOREMAPFREE( dev_priv->primary );
-               DRM_IOREMAPFREE( dev_priv->buffers );
+               if ( dev_priv->warp != NULL )
+                       DRM_IOREMAPFREE( dev_priv->warp );
+               if ( dev_priv->primary != NULL )
+                       DRM_IOREMAPFREE( dev_priv->primary );
+               if ( dev_priv->buffers != NULL )
+                       DRM_IOREMAPFREE( dev_priv->buffers );
 
                if ( dev_priv->head != NULL ) {
                        mga_freelist_cleanup( dev );
index 7f0f432..ad03f4f 100644 (file)
@@ -619,9 +619,12 @@ int r128_do_cleanup_cce( drm_device_t *dev )
 #if __REALLY_HAVE_SG
                if ( !dev_priv->is_pci ) {
 #endif
-                       DRM_IOREMAPFREE( dev_priv->cce_ring );
-                       DRM_IOREMAPFREE( dev_priv->ring_rptr );
-                       DRM_IOREMAPFREE( dev_priv->buffers );
+                       if ( dev_priv->cce_ring != NULL )
+                               DRM_IOREMAPFREE( dev_priv->cce_ring );
+                       if ( dev_priv->ring_rptr != NULL )
+                               DRM_IOREMAPFREE( dev_priv->ring_rptr );
+                       if ( dev_priv->buffers != NULL )
+                               DRM_IOREMAPFREE( dev_priv->buffers );
 #if __REALLY_HAVE_SG
                } else {
                        if (!DRM(ati_pcigart_cleanup)( dev,
index 3ec8dfd..ee4beb1 100644 (file)
@@ -1279,9 +1279,12 @@ int radeon_do_cleanup_cp( drm_device_t *dev )
                drm_radeon_private_t *dev_priv = dev->dev_private;
 
                if ( !dev_priv->is_pci ) {
-                       DRM_IOREMAPFREE( dev_priv->cp_ring );
-                       DRM_IOREMAPFREE( dev_priv->ring_rptr );
-                       DRM_IOREMAPFREE( dev_priv->buffers );
+                       if ( dev_priv->cp_ring != NULL )
+                               DRM_IOREMAPFREE( dev_priv->cp_ring );
+                       if ( dev_priv->ring_rptr != NULL )
+                               DRM_IOREMAPFREE( dev_priv->ring_rptr );
+                       if ( dev_priv->buffers != NULL )
+                               DRM_IOREMAPFREE( dev_priv->buffers );
                } else {
 #if __REALLY_HAVE_SG
                        if (!DRM(ati_pcigart_cleanup)( dev,
index 5e95c9f..96fd97f 100644 (file)
@@ -642,9 +642,12 @@ int mga_do_cleanup_dma( drm_device_t *dev )
        if ( dev->dev_private ) {
                drm_mga_private_t *dev_priv = dev->dev_private;
 
-               DRM_IOREMAPFREE( dev_priv->warp );
-               DRM_IOREMAPFREE( dev_priv->primary );
-               DRM_IOREMAPFREE( dev_priv->buffers );
+               if ( dev_priv->warp != NULL )
+                       DRM_IOREMAPFREE( dev_priv->warp );
+               if ( dev_priv->primary != NULL )
+                       DRM_IOREMAPFREE( dev_priv->primary );
+               if ( dev_priv->buffers != NULL )
+                       DRM_IOREMAPFREE( dev_priv->buffers );
 
                if ( dev_priv->head != NULL ) {
                        mga_freelist_cleanup( dev );
index 7f0f432..ad03f4f 100644 (file)
@@ -619,9 +619,12 @@ int r128_do_cleanup_cce( drm_device_t *dev )
 #if __REALLY_HAVE_SG
                if ( !dev_priv->is_pci ) {
 #endif
-                       DRM_IOREMAPFREE( dev_priv->cce_ring );
-                       DRM_IOREMAPFREE( dev_priv->ring_rptr );
-                       DRM_IOREMAPFREE( dev_priv->buffers );
+                       if ( dev_priv->cce_ring != NULL )
+                               DRM_IOREMAPFREE( dev_priv->cce_ring );
+                       if ( dev_priv->ring_rptr != NULL )
+                               DRM_IOREMAPFREE( dev_priv->ring_rptr );
+                       if ( dev_priv->buffers != NULL )
+                               DRM_IOREMAPFREE( dev_priv->buffers );
 #if __REALLY_HAVE_SG
                } else {
                        if (!DRM(ati_pcigart_cleanup)( dev,
index 3ec8dfd..ee4beb1 100644 (file)
@@ -1279,9 +1279,12 @@ int radeon_do_cleanup_cp( drm_device_t *dev )
                drm_radeon_private_t *dev_priv = dev->dev_private;
 
                if ( !dev_priv->is_pci ) {
-                       DRM_IOREMAPFREE( dev_priv->cp_ring );
-                       DRM_IOREMAPFREE( dev_priv->ring_rptr );
-                       DRM_IOREMAPFREE( dev_priv->buffers );
+                       if ( dev_priv->cp_ring != NULL )
+                               DRM_IOREMAPFREE( dev_priv->cp_ring );
+                       if ( dev_priv->ring_rptr != NULL )
+                               DRM_IOREMAPFREE( dev_priv->ring_rptr );
+                       if ( dev_priv->buffers != NULL )
+                               DRM_IOREMAPFREE( dev_priv->buffers );
                } else {
 #if __REALLY_HAVE_SG
                        if (!DRM(ati_pcigart_cleanup)( dev,