Messages in this thread Patch in this message | | | Date | Thu, 22 May 2008 21:24:49 +0100 | From | Alan Cox <> | Subject | [PATCH] applicom: push BKL down into driver |
| |
Not a lot of elimination here just push it down so someone can do it later.
Signed-off-by: Alan Cox <alan@redhat.com>
diff --git a/drivers/char/applicom.c b/drivers/char/applicom.c index 31d08b6..80fed25 100644 --- a/drivers/char/applicom.c +++ b/drivers/char/applicom.c @@ -104,8 +104,7 @@ static unsigned int DeviceErrorCount; /* number of device error */ static ssize_t ac_read (struct file *, char __user *, size_t, loff_t *); static ssize_t ac_write (struct file *, const char __user *, size_t, loff_t *); -static int ac_ioctl(struct inode *, struct file *, unsigned int, - unsigned long); +static long ac_ioctl(struct file *, unsigned int, unsigned long); static irqreturn_t ac_interrupt(int, void *); static const struct file_operations ac_fops = { @@ -113,7 +112,7 @@ static const struct file_operations ac_fops = { .llseek = no_llseek, .read = ac_read, .write = ac_write, - .ioctl = ac_ioctl, + .unlocked_ioctl = ac_ioctl, }; static struct miscdevice ac_miscdev = { @@ -687,7 +686,7 @@ static irqreturn_t ac_interrupt(int vec, void *dev_instance) -static int ac_ioctl(struct inode *inode, struct file *file, unsigned int cmd, unsigned long arg) +static long ac_ioctl(struct file *file, unsigned int cmd, unsigned long arg) { /* @ ADG ou ATO selon le cas */ int i; @@ -710,6 +709,8 @@ static int ac_ioctl(struct inode *inode, struct file *file, unsigned int cmd, un return -EFAULT; } + lock_kernel(); + IndexCard = adgl->num_card-1; if(cmd != 0 && cmd != 6 && @@ -720,6 +721,7 @@ static int ac_ioctl(struct inode *inode, struct file *file, unsigned int cmd, un warncount--; } kfree(adgl); + unlock_kernel(); return -EINVAL; } @@ -837,6 +839,7 @@ static int ac_ioctl(struct inode *inode, struct file *file, unsigned int cmd, un break; } Dummy = readb(apbs[IndexCard].RamIO + VERS); + unlock_kernel(); kfree(adgl); return 0; }
| |