diff options
author | Rik Faith <faith@alephnull.com> | 2000-07-19 18:38:41 +0000 |
---|---|---|
committer | Rik Faith <faith@alephnull.com> | 2000-07-19 18:38:41 +0000 |
commit | aed8549e91ade1582505ebce50e4a79d99b4436f (patch) | |
tree | 75fae913a2327facdbd944b373a7e9ebe4ec9c8c /linux/gamma_drv.c | |
parent | 7b888f87fa5ec559df97a7e911dd5a3328895f6f (diff) |
Sync with Linux 2.4.0-test4 kernel
Diffstat (limited to 'linux/gamma_drv.c')
-rw-r--r-- | linux/gamma_drv.c | 16 |
1 files changed, 13 insertions, 3 deletions
diff --git a/linux/gamma_drv.c b/linux/gamma_drv.c index 987c903d..fd811f1d 100644 --- a/linux/gamma_drv.c +++ b/linux/gamma_drv.c @@ -34,6 +34,7 @@ #include "drmP.h" #include "gamma_drv.h" #include <linux/pci.h> +#include <linux/smp_lock.h> /* For (un)lock_kernel */ EXPORT_SYMBOL(gamma_init); EXPORT_SYMBOL(gamma_cleanup); @@ -54,6 +55,10 @@ EXPORT_SYMBOL(gamma_cleanup); static drm_device_t gamma_device; static struct file_operations gamma_fops = { +#if LINUX_VERSION_CODE >= 0x020322 + /* This started being used approx. 2.3.34 */ + owner: THIS_MODULE, +#endif open: gamma_open, flush: drm_flush, release: gamma_release, @@ -284,12 +289,12 @@ static int gamma_takedown(drm_device_t *dev) - PAGE_SHIFT, DRM_MEM_SAREA); break; -#ifdef DRM_AGP case _DRM_AGP: +#ifdef DRM_AGP /* Do nothing here, because this is all handled in the AGP/GART driver. */ - break; #endif + break; } drm_free(map, sizeof(*map), DRM_MEM_MAPS); } @@ -476,6 +481,7 @@ int gamma_release(struct inode *inode, struct file *filp) int retcode = 0; DRM_DEBUG("open_count = %d\n", dev->open_count); + lock_kernel(); if (!(retcode = drm_release(inode, filp))) { MOD_DEC_USE_COUNT; atomic_inc(&dev->total_close); @@ -486,13 +492,17 @@ int gamma_release(struct inode *inode, struct file *filp) atomic_read(&dev->ioctl_count), dev->blocked); spin_unlock(&dev->count_lock); + unlock_kernel(); return -EBUSY; } spin_unlock(&dev->count_lock); - return gamma_takedown(dev); + retcode = gamma_takedown(dev); + unlock_kernel(); + return retcode; } spin_unlock(&dev->count_lock); } + unlock_kernel(); return retcode; } |