toshiba: Push BKL down into driver ioctl code
Subsystems (2)
PATCH 1/1 toshiba: Push BKL down into driver ioctl code
Another I suspect the actual maintainer can easily then eliminate the BKL from entirely.
Signed-off-by Alan Cox <[email protected]>
drivers/char/toshiba.c +8 -6
@@ -68,6 +68,7 @@#include <linux/stat.h> #include <linux/proc_fs.h> #include <linux/seq_file.h> +#include <linux/smp_lock.h> #include <linux/toshiba.h>
@@ -88,13 +89,12 @@ static int tosh_date;static int tosh_sci;static int tosh_fan; -static int tosh_ioctl (struct inode *,struct file *,unsigned int , -unsigned long ); +static long tosh_ioctl (struct file *,unsigned int ,unsigned long );static const struct file_operations tosh_fops = { .owner =THIS_MODULE , - .ioctl = tosh_ioctl, + .unlocked_ioctl = tosh_ioctl, };static struct miscdevice tosh_device = {
@@ -252,8 +252,7 @@ int tosh_smm(SMMRegisters *regs)EXPORT_SYMBOL (tosh_smm); -static int tosh_ioctl (struct inode *ip,struct file *fp,unsigned int cmd, -unsigned long arg) +static long tosh_ioctl (struct file *fp,unsigned int cmd,unsigned long arg) {SMMRegisters regs;SMMRegisters __user *argp = (SMMRegisters __user *)arg;
@@ -275,16 +274,19 @@ static int tosh_ioctl(struct inode *ip, struct file *fp, unsigned int cmd,return -EINVAL ;/* do we need to emulate the fan ? */ +lock_kernel ();if (tosh_fan==1 ) {if (((ax==0xf300 ) || (ax==0xf400 )) && (bx==0x0004 )) { err =tosh_emulate_fan (®s); +unlock_kernel ();break ; } } err =tosh_smm (®s); +unlock_kernel ();break ;default : -return -EINVAL ; +return -ENOTTY ; }if (copy_to_user (argp, ®s,sizeof (SMMRegisters)))