From f08a01c0e21431e1b7990584ce2f61f0e711c093 Mon Sep 17 00:00:00 2001 From: Thomas Hellstrom Date: Wed, 3 Nov 2004 13:37:37 +0000 Subject: Fixed bug in via_dma.c. The code didn't check that the lock was held by the caller. Just that it was held. --- shared-core/via_dma.c | 19 +++++-------------- shared-core/via_drv.h | 4 ++-- 2 files changed, 7 insertions(+), 16 deletions(-) (limited to 'shared-core') diff --git a/shared-core/via_dma.c b/shared-core/via_dma.c index c8aad337..ee4a02ab 100644 --- a/shared-core/via_dma.c +++ b/shared-core/via_dma.c @@ -248,10 +248,7 @@ int via_flush_ioctl(DRM_IOCTL_ARGS) { DRM_DEVICE; - if (!_DRM_LOCK_IS_HELD(dev->lock.hw_lock->lock)) { - DRM_ERROR("via_flush_ioctl called without lock held\n"); - return DRM_ERR(EINVAL); - } + LOCK_TEST_WITH_RETURN( dev, filp ); return via_quiescent(dev); } @@ -262,16 +259,13 @@ int via_cmdbuffer(DRM_IOCTL_ARGS) drm_via_cmdbuffer_t cmdbuf; int ret; + LOCK_TEST_WITH_RETURN( dev, filp ); + DRM_COPY_FROM_USER_IOCTL(cmdbuf, (drm_via_cmdbuffer_t *) data, sizeof(cmdbuf)); DRM_DEBUG("via cmdbuffer, buf %p size %lu\n", cmdbuf.buf, cmdbuf.size); - if (!_DRM_LOCK_IS_HELD(dev->lock.hw_lock->lock)) { - DRM_ERROR("via_cmdbuffer called without lock held\n"); - return DRM_ERR(EINVAL); - } - ret = via_dispatch_cmdbuffer(dev, &cmdbuf); if (ret) { return ret; @@ -339,17 +333,14 @@ int via_pci_cmdbuffer(DRM_IOCTL_ARGS) drm_via_cmdbuffer_t cmdbuf; int ret; + LOCK_TEST_WITH_RETURN( dev, filp ); + DRM_COPY_FROM_USER_IOCTL(cmdbuf, (drm_via_cmdbuffer_t *) data, sizeof(cmdbuf)); DRM_DEBUG("via_pci_cmdbuffer, buf %p size %lu\n", cmdbuf.buf, cmdbuf.size); - if (!_DRM_LOCK_IS_HELD(dev->lock.hw_lock->lock)) { - DRM_ERROR("via_pci_cmdbuffer called without lock held\n"); - return DRM_ERR(EINVAL); - } - ret = via_dispatch_pci_cmdbuffer(dev, &cmdbuf); if (ret) { return ret; diff --git a/shared-core/via_drv.h b/shared-core/via_drv.h index cce54d02..14afaa13 100644 --- a/shared-core/via_drv.h +++ b/shared-core/via_drv.h @@ -28,11 +28,11 @@ #define DRIVER_NAME "via" #define DRIVER_DESC "VIA Unichrome" -#define DRIVER_DATE "20041101" +#define DRIVER_DATE "20041103" #define DRIVER_MAJOR 2 #define DRIVER_MINOR 0 -#define DRIVER_PATCHLEVEL 3 +#define DRIVER_PATCHLEVEL 4 typedef struct drm_via_ring_buffer { drm_map_t map; -- cgit v1.2.3