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: Alan Cox <alan@linux.intel.com>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>

authored by

Alan Cox and committed by
Linus Torvalds
3e8d95d9 5d9d6e44

+7 -5
+7 -5
drivers/char/toshiba.c
··· 68 68 #include <linux/stat.h> 69 69 #include <linux/proc_fs.h> 70 70 #include <linux/seq_file.h> 71 - 71 + #include <linux/smp_lock.h> 72 72 #include <linux/toshiba.h> 73 73 74 74 #define TOSH_MINOR_DEV 181 ··· 88 88 static int tosh_sci; 89 89 static int tosh_fan; 90 90 91 - static int tosh_ioctl(struct inode *, struct file *, unsigned int, 91 + static long tosh_ioctl(struct file *, unsigned int, 92 92 unsigned long); 93 93 94 94 95 95 static const struct file_operations tosh_fops = { 96 96 .owner = THIS_MODULE, 97 - .ioctl = tosh_ioctl, 97 + .unlocked_ioctl = tosh_ioctl, 98 98 }; 99 99 100 100 static struct miscdevice tosh_device = { ··· 252 252 EXPORT_SYMBOL(tosh_smm); 253 253 254 254 255 - static int tosh_ioctl(struct inode *ip, struct file *fp, unsigned int cmd, 256 - unsigned long arg) 255 + static long tosh_ioctl(struct file *fp, unsigned int cmd, unsigned long arg) 257 256 { 258 257 SMMRegisters regs; 259 258 SMMRegisters __user *argp = (SMMRegisters __user *)arg; ··· 274 275 return -EINVAL; 275 276 276 277 /* do we need to emulate the fan ? */ 278 + lock_kernel(); 277 279 if (tosh_fan==1) { 278 280 if (((ax==0xf300) || (ax==0xf400)) && (bx==0x0004)) { 279 281 err = tosh_emulate_fan(&regs); 282 + unlock_kernel(); 280 283 break; 281 284 } 282 285 } 283 286 err = tosh_smm(&regs); 287 + unlock_kernel(); 284 288 break; 285 289 default: 286 290 return -EINVAL;