diff options
Diffstat (limited to 'arch/um/drivers/hostaudio_kern.c')
-rw-r--r-- | arch/um/drivers/hostaudio_kern.c | 12 |
1 files changed, 7 insertions, 5 deletions
diff --git a/arch/um/drivers/hostaudio_kern.c b/arch/um/drivers/hostaudio_kern.c index 63c740a85b4c..f9f6a4e20590 100644 --- a/arch/um/drivers/hostaudio_kern.c +++ b/arch/um/drivers/hostaudio_kern.c | |||
@@ -8,7 +8,7 @@ | |||
8 | #include "linux/slab.h" | 8 | #include "linux/slab.h" |
9 | #include "linux/sound.h" | 9 | #include "linux/sound.h" |
10 | #include "linux/soundcard.h" | 10 | #include "linux/soundcard.h" |
11 | #include "linux/smp_lock.h" | 11 | #include "linux/mutex.h" |
12 | #include "asm/uaccess.h" | 12 | #include "asm/uaccess.h" |
13 | #include "init.h" | 13 | #include "init.h" |
14 | #include "os.h" | 14 | #include "os.h" |
@@ -63,6 +63,8 @@ static int set_mixer(char *name, int *add) | |||
63 | __uml_setup("mixer=", set_mixer, "mixer=<mixer device>\n" MIXER_HELP); | 63 | __uml_setup("mixer=", set_mixer, "mixer=<mixer device>\n" MIXER_HELP); |
64 | #endif | 64 | #endif |
65 | 65 | ||
66 | static DEFINE_MUTEX(hostaudio_mutex); | ||
67 | |||
66 | /* /dev/dsp file operations */ | 68 | /* /dev/dsp file operations */ |
67 | 69 | ||
68 | static ssize_t hostaudio_read(struct file *file, char __user *buffer, | 70 | static ssize_t hostaudio_read(struct file *file, char __user *buffer, |
@@ -198,9 +200,9 @@ static int hostaudio_open(struct inode *inode, struct file *file) | |||
198 | w = 1; | 200 | w = 1; |
199 | 201 | ||
200 | kparam_block_sysfs_write(dsp); | 202 | kparam_block_sysfs_write(dsp); |
201 | lock_kernel(); | 203 | mutex_lock(&hostaudio_mutex); |
202 | ret = os_open_file(dsp, of_set_rw(OPENFLAGS(), r, w), 0); | 204 | ret = os_open_file(dsp, of_set_rw(OPENFLAGS(), r, w), 0); |
203 | unlock_kernel(); | 205 | mutex_unlock(&hostaudio_mutex); |
204 | kparam_unblock_sysfs_write(dsp); | 206 | kparam_unblock_sysfs_write(dsp); |
205 | 207 | ||
206 | if (ret < 0) { | 208 | if (ret < 0) { |
@@ -259,9 +261,9 @@ static int hostmixer_open_mixdev(struct inode *inode, struct file *file) | |||
259 | w = 1; | 261 | w = 1; |
260 | 262 | ||
261 | kparam_block_sysfs_write(mixer); | 263 | kparam_block_sysfs_write(mixer); |
262 | lock_kernel(); | 264 | mutex_lock(&hostaudio_mutex); |
263 | ret = os_open_file(mixer, of_set_rw(OPENFLAGS(), r, w), 0); | 265 | ret = os_open_file(mixer, of_set_rw(OPENFLAGS(), r, w), 0); |
264 | unlock_kernel(); | 266 | mutex_unlock(&hostaudio_mutex); |
265 | kparam_unblock_sysfs_write(mixer); | 267 | kparam_unblock_sysfs_write(mixer); |
266 | 268 | ||
267 | if (ret < 0) { | 269 | if (ret < 0) { |