diff options
Diffstat (limited to 'sound/oss/forte.c')
| -rw-r--r-- | sound/oss/forte.c | 11 |
1 files changed, 6 insertions, 5 deletions
diff --git a/sound/oss/forte.c b/sound/oss/forte.c index 8406bc90c4ff..0294eec8ad90 100644 --- a/sound/oss/forte.c +++ b/sound/oss/forte.c | |||
| @@ -43,6 +43,7 @@ | |||
| 43 | #include <linux/interrupt.h> | 43 | #include <linux/interrupt.h> |
| 44 | 44 | ||
| 45 | #include <linux/proc_fs.h> | 45 | #include <linux/proc_fs.h> |
| 46 | #include <linux/mutex.h> | ||
| 46 | 47 | ||
| 47 | #include <asm/uaccess.h> | 48 | #include <asm/uaccess.h> |
| 48 | #include <asm/io.h> | 49 | #include <asm/io.h> |
| @@ -185,7 +186,7 @@ struct forte_chip { | |||
| 185 | unsigned long iobase; | 186 | unsigned long iobase; |
| 186 | int irq; | 187 | int irq; |
| 187 | 188 | ||
| 188 | struct semaphore open_sem; /* Device access */ | 189 | struct mutex open_mutex; /* Device access */ |
| 189 | spinlock_t lock; /* State */ | 190 | spinlock_t lock; /* State */ |
| 190 | 191 | ||
| 191 | spinlock_t ac97_lock; | 192 | spinlock_t ac97_lock; |
| @@ -1242,13 +1243,13 @@ forte_dsp_open (struct inode *inode, struct file *file) | |||
| 1242 | struct forte_chip *chip = forte; /* FIXME: HACK FROM HELL! */ | 1243 | struct forte_chip *chip = forte; /* FIXME: HACK FROM HELL! */ |
| 1243 | 1244 | ||
| 1244 | if (file->f_flags & O_NONBLOCK) { | 1245 | if (file->f_flags & O_NONBLOCK) { |
| 1245 | if (down_trylock (&chip->open_sem)) { | 1246 | if (!mutex_trylock(&chip->open_mutex)) { |
| 1246 | DPRINTK ("%s: returning -EAGAIN\n", __FUNCTION__); | 1247 | DPRINTK ("%s: returning -EAGAIN\n", __FUNCTION__); |
| 1247 | return -EAGAIN; | 1248 | return -EAGAIN; |
| 1248 | } | 1249 | } |
| 1249 | } | 1250 | } |
| 1250 | else { | 1251 | else { |
| 1251 | if (down_interruptible (&chip->open_sem)) { | 1252 | if (mutex_lock_interruptible(&chip->open_mutex)) { |
| 1252 | DPRINTK ("%s: returning -ERESTARTSYS\n", __FUNCTION__); | 1253 | DPRINTK ("%s: returning -ERESTARTSYS\n", __FUNCTION__); |
| 1253 | return -ERESTARTSYS; | 1254 | return -ERESTARTSYS; |
| 1254 | } | 1255 | } |
| @@ -1302,7 +1303,7 @@ forte_dsp_release (struct inode *inode, struct file *file) | |||
| 1302 | spin_unlock_irq (&chip->lock); | 1303 | spin_unlock_irq (&chip->lock); |
| 1303 | } | 1304 | } |
| 1304 | 1305 | ||
| 1305 | up (&chip->open_sem); | 1306 | mutex_unlock(&chip->open_mutex); |
| 1306 | 1307 | ||
| 1307 | return ret; | 1308 | return ret; |
| 1308 | } | 1309 | } |
| @@ -2011,7 +2012,7 @@ forte_probe (struct pci_dev *pci_dev, const struct pci_device_id *pci_id) | |||
| 2011 | memset (chip, 0, sizeof (struct forte_chip)); | 2012 | memset (chip, 0, sizeof (struct forte_chip)); |
| 2012 | chip->pci_dev = pci_dev; | 2013 | chip->pci_dev = pci_dev; |
| 2013 | 2014 | ||
| 2014 | init_MUTEX(&chip->open_sem); | 2015 | mutex_init(&chip->open_mutex); |
| 2015 | spin_lock_init (&chip->lock); | 2016 | spin_lock_init (&chip->lock); |
| 2016 | spin_lock_init (&chip->ac97_lock); | 2017 | spin_lock_init (&chip->ac97_lock); |
| 2017 | 2018 | ||
