git://git.onelab.eu
/
linux-2.6.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Fedora kernel-2.6.17-1.2142_FC4 patched with stable patch-2.6.17.4-vs2.0.2-rc26.diff
[linux-2.6.git]
/
sound
/
oss
/
maestro3.c
diff --git
a/sound/oss/maestro3.c
b/sound/oss/maestro3.c
index
f3dec70
..
4a5e423
100644
(file)
--- a/
sound/oss/maestro3.c
+++ b/
sound/oss/maestro3.c
@@
-144,6
+144,8
@@
#include <linux/spinlock.h>
#include <linux/ac97_codec.h>
#include <linux/wait.h>
#include <linux/spinlock.h>
#include <linux/ac97_codec.h>
#include <linux/wait.h>
+#include <linux/mutex.h>
+
#include <asm/io.h>
#include <asm/dma.h>
#include <asm/io.h>
#include <asm/dma.h>
@@
-205,7
+207,7
@@
struct m3_state {
when irqhandler uses s->lock
and m3_assp_read uses card->lock ?
*/
when irqhandler uses s->lock
and m3_assp_read uses card->lock ?
*/
- struct
semaphore open_sem
;
+ struct
mutex open_mutex
;
wait_queue_head_t open_wait;
mode_t open_mode;
wait_queue_head_t open_wait;
mode_t open_mode;
@@
-2013,17
+2015,17
@@
static int m3_open(struct inode *inode, struct file *file)
file->private_data = s;
/* wait for device to become free */
file->private_data = s;
/* wait for device to become free */
-
down(&s->open_sem
);
+
mutex_lock(&s->open_mutex
);
while (s->open_mode & file->f_mode) {
if (file->f_flags & O_NONBLOCK) {
while (s->open_mode & file->f_mode) {
if (file->f_flags & O_NONBLOCK) {
-
up(&s->open_sem
);
+
mutex_unlock(&s->open_mutex
);
return -EWOULDBLOCK;
}
return -EWOULDBLOCK;
}
-
up(&s->open_sem
);
+
mutex_unlock(&s->open_mutex
);
interruptible_sleep_on(&s->open_wait);
if (signal_pending(current))
return -ERESTARTSYS;
interruptible_sleep_on(&s->open_wait);
if (signal_pending(current))
return -ERESTARTSYS;
-
down(&s->open_sem
);
+
mutex_lock(&s->open_mutex
);
}
spin_lock_irqsave(&c->lock, flags);
}
spin_lock_irqsave(&c->lock, flags);
@@
-2047,7
+2049,7
@@
static int m3_open(struct inode *inode, struct file *file)
set_fmt(s, fmtm, fmts);
s->open_mode |= file->f_mode & (FMODE_READ | FMODE_WRITE);
set_fmt(s, fmtm, fmts);
s->open_mode |= file->f_mode & (FMODE_READ | FMODE_WRITE);
-
up(&s->open_sem
);
+
mutex_unlock(&s->open_mutex
);
spin_unlock_irqrestore(&c->lock, flags);
return nonseekable_open(inode, file);
}
spin_unlock_irqrestore(&c->lock, flags);
return nonseekable_open(inode, file);
}
@@
-2062,7
+2064,7
@@
static int m3_release(struct inode *inode, struct file *file)
if (file->f_mode & FMODE_WRITE)
drain_dac(s, file->f_flags & O_NONBLOCK);
if (file->f_mode & FMODE_WRITE)
drain_dac(s, file->f_flags & O_NONBLOCK);
-
down(&s->open_sem
);
+
mutex_lock(&s->open_mutex
);
spin_lock_irqsave(&card->lock, flags);
if (file->f_mode & FMODE_WRITE) {
spin_lock_irqsave(&card->lock, flags);
if (file->f_mode & FMODE_WRITE) {
@@
-2083,7
+2085,7
@@
static int m3_release(struct inode *inode, struct file *file)
s->open_mode &= (~file->f_mode) & (FMODE_READ|FMODE_WRITE);
spin_unlock_irqrestore(&card->lock, flags);
s->open_mode &= (~file->f_mode) & (FMODE_READ|FMODE_WRITE);
spin_unlock_irqrestore(&card->lock, flags);
-
up(&s->open_sem
);
+
mutex_unlock(&s->open_mutex
);
wake_up(&s->open_wait);
return 0;
wake_up(&s->open_wait);
return 0;
@@
-2580,15
+2582,9
@@
static int alloc_dsp_suspendmem(struct m3_card *card)
return 0;
}
return 0;
}
-static void free_dsp_suspendmem(struct m3_card *card)
-{
- if(card->suspend_mem)
- vfree(card->suspend_mem);
-}
#else
#define alloc_dsp_suspendmem(args...) 0
#else
#define alloc_dsp_suspendmem(args...) 0
-#define free_dsp_suspendmem(args...)
#endif
/*
#endif
/*
@@
-2679,7
+2675,7
@@
static int __devinit m3_probe(struct pci_dev *pci_dev, const struct pci_device_i
init_waitqueue_head(&s->dma_adc.wait);
init_waitqueue_head(&s->dma_dac.wait);
init_waitqueue_head(&s->open_wait);
init_waitqueue_head(&s->dma_adc.wait);
init_waitqueue_head(&s->dma_dac.wait);
init_waitqueue_head(&s->open_wait);
-
init_MUTEX(&(s->open_sem
));
+
mutex_init(&(s->open_mutex
));
s->magic = M3_STATE_MAGIC;
m3_assp_client_init(s);
s->magic = M3_STATE_MAGIC;
m3_assp_client_init(s);
@@
-2715,7
+2711,7
@@
out:
if(ret) {
if(card->iobase)
release_region(pci_resource_start(pci_dev, 0), pci_resource_len(pci_dev, 0));
if(ret) {
if(card->iobase)
release_region(pci_resource_start(pci_dev, 0), pci_resource_len(pci_dev, 0));
-
free_dsp_suspendmem(card
);
+
vfree(card->suspend_mem
);
if(card->ac97) {
unregister_sound_mixer(card->ac97->dev_mixer);
kfree(card->ac97);
if(card->ac97) {
unregister_sound_mixer(card->ac97->dev_mixer);
kfree(card->ac97);
@@
-2758,7
+2754,7
@@
static void m3_remove(struct pci_dev *pci_dev)
}
release_region(card->iobase, 256);
}
release_region(card->iobase, 256);
-
free_dsp_suspendmem(card
);
+
vfree(card->suspend_mem
);
kfree(card);
}
devs = NULL;
kfree(card);
}
devs = NULL;