paride: Push ioctl down into driver
PATCH 1/1 paride: Push ioctl down into driver
Leaves us with lock_krnel for two methods. Also remove a bogus printk with no printk level and return -ENOTTY not -EINVAL for correctness.
Signed-off-by Alan Cox <[email protected]>
drivers/block/paride/pt.c +11 -9
@@ -146,6 +146,7 @@ static int (*drives[4])[6] = {&drive0, &drive1, &drive2, &drive3};#include <linux/mtio.h> #include <linux/device.h> #include <linux/sched.h> /* current, TASK_*, schedule_timeout() */ +#include <linux/smp_lock.h> #include <asm/uaccess.h>
@@ -189,8 +190,7 @@ module_param_array(drive3, int, NULL, 0);#define ATAPI_LOG_SENSE 0x4dstatic int pt_open (struct inode *inode,struct file *file); -static int pt_ioctl (struct inode *inode,struct file *file, -unsigned int cmd,unsigned long arg); +static long pt_ioctl (struct file *file,unsigned int cmd,unsigned long arg);static int pt_release (struct inode *inode,struct file *file);static ssize_t pt_read (struct file *filp,char __user *buf,size_t count,loff_t * ppos);
@@ -236,7 +236,7 @@ static const struct file_operations pt_fops = { .owner = THIS_MODULE, .read = pt_read, .write = pt_write, - .ioctl = pt_ioctl, + .unlocked_ioctl = pt_ioctl, .open = pt_open, .release = pt_release, };
@@ -685,8 +685,7 @@ out:return err; } -static int pt_ioctl (struct inode *inode,struct file *file, -unsigned int cmd,unsigned long arg) +static long pt_ioctl (struct file *file,unsigned int cmd,unsigned long arg) {struct pt_unit *tape = file->private_data;struct mtop __user *p = (void __user *)arg;
@@ -700,23 +699,26 @@ static int pt_ioctl(struct inode *inode, struct file *file,switch (mtop.mt_op) {case MTREW : +lock_kernel ();pt_rewind (tape); +unlock_kernel ();return 0 ;case MTWEOF : +lock_kernel ();pt_write_fm (tape); +unlock_kernel ();return 0 ;default : -printk ("%s: Unimplemented mt_op %d\n" , tape->name, +/* FIXME: rate limit ?? */ +printk (KERN_DEBUG "%s: Unimplemented mt_op %d\n" , tape->name, mtop.mt_op);return -EINVAL ; }default : -printk ("%s: Unimplemented ioctl 0x%x\n" , tape->name, cmd); -return -EINVAL ; - +return -ENOTTY ; } }