diff options
Diffstat (limited to 'arch/mips/kernel/rtlx.c')
| -rw-r--r-- | arch/mips/kernel/rtlx.c | 7 | 
1 files changed, 6 insertions, 1 deletions
| diff --git a/arch/mips/kernel/rtlx.c b/arch/mips/kernel/rtlx.c index b88f1c18ff4d..b55641961232 100644 --- a/arch/mips/kernel/rtlx.c +++ b/arch/mips/kernel/rtlx.c @@ -28,6 +28,7 @@  #include <linux/vmalloc.h>  #include <linux/elf.h>  #include <linux/seq_file.h> +#include <linux/smp_lock.h>  #include <linux/syscalls.h>  #include <linux/moduleloader.h>  #include <linux/interrupt.h> @@ -392,8 +393,12 @@ out:  static int file_open(struct inode *inode, struct file *filp)  {  	int minor = iminor(inode); +	int err; -	return rtlx_open(minor, (filp->f_flags & O_NONBLOCK) ? 0 : 1); +	lock_kernel(); +	err = rtlx_open(minor, (filp->f_flags & O_NONBLOCK) ? 0 : 1); +	unlock_kernel(); +	return err;  }  static int file_release(struct inode *inode, struct file *filp) |