diff options
Diffstat (limited to 'arch/um/drivers/hostaudio_kern.c')
| -rw-r--r-- | arch/um/drivers/hostaudio_kern.c | 28 |
1 files changed, 15 insertions, 13 deletions
diff --git a/arch/um/drivers/hostaudio_kern.c b/arch/um/drivers/hostaudio_kern.c index 63c740a85b4..9b90fdc4b15 100644 --- a/arch/um/drivers/hostaudio_kern.c +++ b/arch/um/drivers/hostaudio_kern.c @@ -3,15 +3,15 @@ * Licensed under the GPL */ -#include "linux/fs.h" -#include "linux/module.h" -#include "linux/slab.h" -#include "linux/sound.h" -#include "linux/soundcard.h" -#include "linux/smp_lock.h" -#include "asm/uaccess.h" -#include "init.h" -#include "os.h" +#include <linux/fs.h> +#include <linux/module.h> +#include <linux/slab.h> +#include <linux/sound.h> +#include <linux/soundcard.h> +#include <linux/mutex.h> +#include <asm/uaccess.h> +#include <init.h> +#include <os.h> struct hostaudio_state { int fd; @@ -63,6 +63,8 @@ static int set_mixer(char *name, int *add) __uml_setup("mixer=", set_mixer, "mixer=<mixer device>\n" MIXER_HELP); #endif +static DEFINE_MUTEX(hostaudio_mutex); + /* /dev/dsp file operations */ 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) w = 1; kparam_block_sysfs_write(dsp); - lock_kernel(); + mutex_lock(&hostaudio_mutex); ret = os_open_file(dsp, of_set_rw(OPENFLAGS(), r, w), 0); - unlock_kernel(); + mutex_unlock(&hostaudio_mutex); kparam_unblock_sysfs_write(dsp); if (ret < 0) { @@ -259,9 +261,9 @@ static int hostmixer_open_mixdev(struct inode *inode, struct file *file) w = 1; kparam_block_sysfs_write(mixer); - lock_kernel(); + mutex_lock(&hostaudio_mutex); ret = os_open_file(mixer, of_set_rw(OPENFLAGS(), r, w), 0); - unlock_kernel(); + mutex_unlock(&hostaudio_mutex); kparam_unblock_sysfs_write(mixer); if (ret < 0) { |
