diff options
| -rw-r--r-- | arch/um/drivers/harddog_kern.c | 13 | ||||
| -rw-r--r-- | arch/um/drivers/hostaudio_kern.c | 12 | ||||
| -rw-r--r-- | arch/um/drivers/ubd_kern.c | 11 | ||||
| -rw-r--r-- | arch/um/kernel/exec.c | 2 | 
4 files changed, 20 insertions, 18 deletions
diff --git a/arch/um/drivers/harddog_kern.c b/arch/um/drivers/harddog_kern.c index cfcac1ff4cf..86036276020 100644 --- a/arch/um/drivers/harddog_kern.c +++ b/arch/um/drivers/harddog_kern.c @@ -42,7 +42,7 @@  #include <linux/miscdevice.h>  #include <linux/watchdog.h>  #include <linux/reboot.h> -#include <linux/smp_lock.h> +#include <linux/mutex.h>  #include <linux/init.h>  #include <linux/spinlock.h>  #include <asm/uaccess.h> @@ -50,6 +50,7 @@  MODULE_LICENSE("GPL"); +static DEFINE_MUTEX(harddog_mutex);  static DEFINE_SPINLOCK(lock);  static int timer_alive;  static int harddog_in_fd = -1; @@ -66,7 +67,7 @@ static int harddog_open(struct inode *inode, struct file *file)  	int err = -EBUSY;  	char *sock = NULL; -	lock_kernel(); +	mutex_lock(&harddog_mutex);  	spin_lock(&lock);  	if(timer_alive)  		goto err; @@ -83,11 +84,11 @@ static int harddog_open(struct inode *inode, struct file *file)  	timer_alive = 1;  	spin_unlock(&lock); -	unlock_kernel(); +	mutex_unlock(&harddog_mutex);  	return nonseekable_open(inode, file);  err:  	spin_unlock(&lock); -	unlock_kernel(); +	mutex_unlock(&harddog_mutex);  	return err;  } @@ -153,9 +154,9 @@ static long harddog_ioctl(struct file *file,  {  	long ret; -	lock_kernel(); +	mutex_lock(&harddog_mutex);  	ret = harddog_ioctl_unlocked(file, cmd, arg); -	unlock_kernel(); +	mutex_unlock(&harddog_mutex);  	return ret;  } diff --git a/arch/um/drivers/hostaudio_kern.c b/arch/um/drivers/hostaudio_kern.c index 0c46e398cd8..d92ff6d6029 100644 --- a/arch/um/drivers/hostaudio_kern.c +++ b/arch/um/drivers/hostaudio_kern.c @@ -8,7 +8,7 @@  #include "linux/slab.h"  #include "linux/sound.h"  #include "linux/soundcard.h" -#include "linux/smp_lock.h" +#include "linux/mutex.h"  #include "asm/uaccess.h"  #include "init.h"  #include "os.h" @@ -67,6 +67,8 @@ MODULE_PARM_DESC(mixer, MIXER_HELP);  #endif +static DEFINE_MUTEX(hostaudio_mutex); +  /* /dev/dsp file operations */  static ssize_t hostaudio_read(struct file *file, char __user *buffer, @@ -202,9 +204,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) { @@ -263,9 +265,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) { diff --git a/arch/um/drivers/ubd_kern.c b/arch/um/drivers/ubd_kern.c index 1bcd208c459..0c053607ce9 100644 --- a/arch/um/drivers/ubd_kern.c +++ b/arch/um/drivers/ubd_kern.c @@ -33,7 +33,7 @@  #include "linux/mm.h"  #include "linux/slab.h"  #include "linux/vmalloc.h" -#include "linux/smp_lock.h" +#include "linux/mutex.h"  #include "linux/blkpg.h"  #include "linux/genhd.h"  #include "linux/spinlock.h" @@ -100,6 +100,7 @@ static inline void ubd_set_bit(__u64 bit, unsigned char *data)  #define DRIVER_NAME "uml-blkdev"  static DEFINE_MUTEX(ubd_lock); +static DEFINE_MUTEX(ubd_mutex); /* replaces BKL, might not be needed */  static int ubd_open(struct block_device *bdev, fmode_t mode);  static int ubd_release(struct gendisk *disk, fmode_t mode); @@ -1099,7 +1100,7 @@ static int ubd_open(struct block_device *bdev, fmode_t mode)  	struct ubd *ubd_dev = disk->private_data;  	int err = 0; -	lock_kernel(); +	mutex_lock(&ubd_mutex);  	if(ubd_dev->count == 0){  		err = ubd_open_dev(ubd_dev);  		if(err){ @@ -1118,7 +1119,7 @@ static int ubd_open(struct block_device *bdev, fmode_t mode)  	        err = -EROFS;  	}*/  out: -	unlock_kernel(); +	mutex_unlock(&ubd_mutex);  	return err;  } @@ -1126,10 +1127,10 @@ static int ubd_release(struct gendisk *disk, fmode_t mode)  {  	struct ubd *ubd_dev = disk->private_data; -	lock_kernel(); +	mutex_lock(&ubd_mutex);  	if(--ubd_dev->count == 0)  		ubd_close_dev(ubd_dev); -	unlock_kernel(); +	mutex_unlock(&ubd_mutex);  	return 0;  } diff --git a/arch/um/kernel/exec.c b/arch/um/kernel/exec.c index cd145eda357..460ce86f401 100644 --- a/arch/um/kernel/exec.c +++ b/arch/um/kernel/exec.c @@ -78,13 +78,11 @@ long sys_execve(const char __user *file, char __user *__user *argv,  	long error;  	char *filename; -	lock_kernel();  	filename = getname(file);  	error = PTR_ERR(filename);  	if (IS_ERR(filename)) goto out;  	error = execve1(filename, argv, env);  	putname(filename);   out: -	unlock_kernel();  	return error;  }  |