Index: linux-2.6.10-ckdev/drivers/char/drm/i810_dma.c =================================================================== --- linux-2.6.10-ckdev.orig/drivers/char/drm/i810_dma.c 2004-12-25 10:14:48.000000000 +1100 +++ linux-2.6.10-ckdev/drivers/char/drm/i810_dma.c 2004-12-29 13:01:14.085196868 +1100 @@ -1030,10 +1030,7 @@ int i810_flush_ioctl(struct inode *inode drm_file_t *priv = filp->private_data; drm_device_t *dev = priv->dev; - if (!_DRM_LOCK_IS_HELD(dev->lock.hw_lock->lock)) { - DRM_ERROR("i810_flush_ioctl called without lock held\n"); - return -EINVAL; - } + LOCK_TEST_WITH_RETURN( dev, filp ); i810_flush_queue(dev); return 0; @@ -1055,10 +1052,7 @@ int i810_dma_vertex(struct inode *inode, if (copy_from_user(&vertex, (drm_i810_vertex_t __user *)arg, sizeof(vertex))) return -EFAULT; - if (!_DRM_LOCK_IS_HELD(dev->lock.hw_lock->lock)) { - DRM_ERROR("i810_dma_vertex called without lock held\n"); - return -EINVAL; - } + LOCK_TEST_WITH_RETURN( dev, filp ); DRM_DEBUG("i810 dma vertex, idx %d used %d discard %d\n", vertex.idx, vertex.used, vertex.discard); @@ -1090,10 +1084,7 @@ int i810_clear_bufs(struct inode *inode, if (copy_from_user(&clear, (drm_i810_clear_t __user *)arg, sizeof(clear))) return -EFAULT; - if (!_DRM_LOCK_IS_HELD(dev->lock.hw_lock->lock)) { - DRM_ERROR("i810_clear_bufs called without lock held\n"); - return -EINVAL; - } + LOCK_TEST_WITH_RETURN( dev, filp ); /* GH: Someone's doing nasty things... */ if (!dev->dev_private) { @@ -1114,10 +1105,8 @@ int i810_swap_bufs(struct inode *inode, DRM_DEBUG("i810_swap_bufs\n"); - if (!_DRM_LOCK_IS_HELD(dev->lock.hw_lock->lock)) { - DRM_ERROR("i810_swap_buf called without lock held\n"); - return -EINVAL; - } + + LOCK_TEST_WITH_RETURN( dev, filp ); i810_dma_dispatch_swap( dev ); return 0; @@ -1152,10 +1141,7 @@ int i810_getbuf(struct inode *inode, str if (copy_from_user(&d, (drm_i810_dma_t __user *)arg, sizeof(d))) return -EFAULT; - if (!_DRM_LOCK_IS_HELD(dev->lock.hw_lock->lock)) { - DRM_ERROR("i810_dma called without lock held\n"); - return -EINVAL; - } + LOCK_TEST_WITH_RETURN( dev, filp ); d.granted = 0; @@ -1266,10 +1252,7 @@ int i810_dma_mc(struct inode *inode, str return -EFAULT; - if (!_DRM_LOCK_IS_HELD(dev->lock.hw_lock->lock)) { - DRM_ERROR("i810_dma_mc called without lock held\n"); - return -EINVAL; - } + LOCK_TEST_WITH_RETURN( dev, filp ); if (mc.idx >= dma->buf_count || mc.idx < 0) return -EINVAL; @@ -1317,10 +1300,7 @@ int i810_fstatus(struct inode *inode, st drm_device_t *dev = priv->dev; drm_i810_private_t *dev_priv = (drm_i810_private_t *)dev->dev_private; - if (!_DRM_LOCK_IS_HELD(dev->lock.hw_lock->lock)) { - DRM_ERROR("i810_fstatus called without lock held\n"); - return -EINVAL; - } + LOCK_TEST_WITH_RETURN( dev, filp ); return I810_READ(0x30008); } @@ -1331,10 +1311,7 @@ int i810_ov0_flip(struct inode *inode, s drm_device_t *dev = priv->dev; drm_i810_private_t *dev_priv = (drm_i810_private_t *)dev->dev_private; - if (!_DRM_LOCK_IS_HELD(dev->lock.hw_lock->lock)) { - DRM_ERROR("i810_ov0_flip called without lock held\n"); - return -EINVAL; - } + LOCK_TEST_WITH_RETURN( dev, filp ); //Tell the overlay to update I810_WRITE(0x30000,dev_priv->overlay_physical | 0x80000000); @@ -1376,10 +1353,7 @@ int i810_flip_bufs(struct inode *inode, DRM_DEBUG("%s\n", __FUNCTION__); - if (!_DRM_LOCK_IS_HELD(dev->lock.hw_lock->lock)) { - DRM_ERROR("i810_flip_buf called without lock held\n"); - return -EINVAL; - } + LOCK_TEST_WITH_RETURN( dev, filp ); if (!dev_priv->page_flipping) i810_do_init_pageflip( dev ); Index: linux-2.6.10-ckdev/drivers/char/drm/i830_dma.c =================================================================== --- linux-2.6.10-ckdev.orig/drivers/char/drm/i830_dma.c 2004-12-25 10:14:48.000000000 +1100 +++ linux-2.6.10-ckdev/drivers/char/drm/i830_dma.c 2004-12-29 13:01:14.107193405 +1100 @@ -1319,10 +1319,7 @@ int i830_flush_ioctl(struct inode *inode drm_file_t *priv = filp->private_data; drm_device_t *dev = priv->dev; - if(!_DRM_LOCK_IS_HELD(dev->lock.hw_lock->lock)) { - DRM_ERROR("i830_flush_ioctl called without lock held\n"); - return -EINVAL; - } + LOCK_TEST_WITH_RETURN( dev, filp ); i830_flush_queue(dev); return 0; @@ -1343,10 +1340,7 @@ int i830_dma_vertex(struct inode *inode, if (copy_from_user(&vertex, (drm_i830_vertex_t __user *)arg, sizeof(vertex))) return -EFAULT; - if(!_DRM_LOCK_IS_HELD(dev->lock.hw_lock->lock)) { - DRM_ERROR("i830_dma_vertex called without lock held\n"); - return -EINVAL; - } + LOCK_TEST_WITH_RETURN( dev, filp ); DRM_DEBUG("i830 dma vertex, idx %d used %d discard %d\n", vertex.idx, vertex.used, vertex.discard); @@ -1373,10 +1367,7 @@ int i830_clear_bufs(struct inode *inode, if (copy_from_user(&clear, (drm_i830_clear_t __user *)arg, sizeof(clear))) return -EFAULT; - if(!_DRM_LOCK_IS_HELD(dev->lock.hw_lock->lock)) { - DRM_ERROR("i830_clear_bufs called without lock held\n"); - return -EINVAL; - } + LOCK_TEST_WITH_RETURN( dev, filp ); /* GH: Someone's doing nasty things... */ if (!dev->dev_private) { @@ -1398,10 +1389,7 @@ int i830_swap_bufs(struct inode *inode, DRM_DEBUG("i830_swap_bufs\n"); - if(!_DRM_LOCK_IS_HELD(dev->lock.hw_lock->lock)) { - DRM_ERROR("i830_swap_buf called without lock held\n"); - return -EINVAL; - } + LOCK_TEST_WITH_RETURN( dev, filp ); i830_dma_dispatch_swap( dev ); return 0; @@ -1442,10 +1430,7 @@ int i830_flip_bufs(struct inode *inode, DRM_DEBUG("%s\n", __FUNCTION__); - if(!_DRM_LOCK_IS_HELD(dev->lock.hw_lock->lock)) { - DRM_ERROR("i830_flip_buf called without lock held\n"); - return -EINVAL; - } + LOCK_TEST_WITH_RETURN( dev, filp ); if (!dev_priv->page_flipping) i830_do_init_pageflip( dev ); @@ -1484,10 +1469,7 @@ int i830_getbuf(struct inode *inode, str if (copy_from_user(&d, (drm_i830_dma_t __user *)arg, sizeof(d))) return -EFAULT; - if(!_DRM_LOCK_IS_HELD(dev->lock.hw_lock->lock)) { - DRM_ERROR("i830_dma called without lock held\n"); - return -EINVAL; - } + LOCK_TEST_WITH_RETURN( dev, filp ); d.granted = 0; Index: linux-2.6.10-ckdev/drivers/char/drm/i830_irq.c =================================================================== --- linux-2.6.10-ckdev.orig/drivers/char/drm/i830_irq.c 2004-10-19 08:57:05.000000000 +1000 +++ linux-2.6.10-ckdev/drivers/char/drm/i830_irq.c 2004-12-29 13:01:14.110192933 +1100 @@ -129,10 +129,7 @@ int i830_irq_emit( struct inode *inode, drm_i830_irq_emit_t emit; int result; - if(!_DRM_LOCK_IS_HELD(dev->lock.hw_lock->lock)) { - DRM_ERROR("i830_irq_emit called without lock held\n"); - return -EINVAL; - } + LOCK_TEST_WITH_RETURN( dev, filp ); if ( !dev_priv ) { DRM_ERROR( "%s called with no initialization\n", __FUNCTION__ );