Commit 3e8d95d9 authored by Alan Cox's avatar Alan Cox Committed by Linus Torvalds

tosh: Use non bkl ioctl

We wrap the smm calls and other bits with the BKL push down as a
precaution but they can probably go
Signed-off-by: default avatarAlan Cox <alan@linux.intel.com>
Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
parent 5d9d6e44
...@@ -68,7 +68,7 @@ ...@@ -68,7 +68,7 @@
#include <linux/stat.h> #include <linux/stat.h>
#include <linux/proc_fs.h> #include <linux/proc_fs.h>
#include <linux/seq_file.h> #include <linux/seq_file.h>
#include <linux/smp_lock.h>
#include <linux/toshiba.h> #include <linux/toshiba.h>
#define TOSH_MINOR_DEV 181 #define TOSH_MINOR_DEV 181
...@@ -88,13 +88,13 @@ static int tosh_date; ...@@ -88,13 +88,13 @@ static int tosh_date;
static int tosh_sci; static int tosh_sci;
static int tosh_fan; static int tosh_fan;
static int tosh_ioctl(struct inode *, struct file *, unsigned int, static long tosh_ioctl(struct file *, unsigned int,
unsigned long); unsigned long);
static const struct file_operations tosh_fops = { static const struct file_operations tosh_fops = {
.owner = THIS_MODULE, .owner = THIS_MODULE,
.ioctl = tosh_ioctl, .unlocked_ioctl = tosh_ioctl,
}; };
static struct miscdevice tosh_device = { static struct miscdevice tosh_device = {
...@@ -252,8 +252,7 @@ int tosh_smm(SMMRegisters *regs) ...@@ -252,8 +252,7 @@ int tosh_smm(SMMRegisters *regs)
EXPORT_SYMBOL(tosh_smm); EXPORT_SYMBOL(tosh_smm);
static int tosh_ioctl(struct inode *ip, struct file *fp, unsigned int cmd, static long tosh_ioctl(struct file *fp, unsigned int cmd, unsigned long arg)
unsigned long arg)
{ {
SMMRegisters regs; SMMRegisters regs;
SMMRegisters __user *argp = (SMMRegisters __user *)arg; SMMRegisters __user *argp = (SMMRegisters __user *)arg;
...@@ -275,13 +274,16 @@ static int tosh_ioctl(struct inode *ip, struct file *fp, unsigned int cmd, ...@@ -275,13 +274,16 @@ static int tosh_ioctl(struct inode *ip, struct file *fp, unsigned int cmd,
return -EINVAL; return -EINVAL;
/* do we need to emulate the fan ? */ /* do we need to emulate the fan ? */
lock_kernel();
if (tosh_fan==1) { if (tosh_fan==1) {
if (((ax==0xf300) || (ax==0xf400)) && (bx==0x0004)) { if (((ax==0xf300) || (ax==0xf400)) && (bx==0x0004)) {
err = tosh_emulate_fan(&regs); err = tosh_emulate_fan(&regs);
unlock_kernel();
break; break;
} }
} }
err = tosh_smm(&regs); err = tosh_smm(&regs);
unlock_kernel();
break; break;
default: default:
return -EINVAL; return -EINVAL;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment