USB: iowarrior: Push down BKL
authorAlan Cox <alan@lxorguk.ukuu.org.uk>
Thu, 22 May 2008 21:06:02 +0000 (22:06 +0100)
committerGreg Kroah-Hartman <gregkh@suse.de>
Mon, 21 Jul 2008 22:16:19 +0000 (15:16 -0700)
I'm pretty sure the mutex is sufficient for all locking but will come
back to that later if the USB folks don't beat me to it. For now get rid
of the old BKL ioctl method and wrap the ioctl handler

Signed-off-by: Alan Cox <alan@redhat.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
drivers/usb/misc/iowarrior.c

index 1cb54a28347f0fe332363df6c3dcac7d11770573..e6ca9979e3ae5eece2a693207f2e7426ca8fc1dc 100644 (file)
@@ -474,8 +474,8 @@ exit:
 /**
  *     iowarrior_ioctl
  */
-static int iowarrior_ioctl(struct inode *inode, struct file *file,
-                          unsigned int cmd, unsigned long arg)
+static long iowarrior_ioctl(struct file *file, unsigned int cmd,
+                                                       unsigned long arg)
 {
        struct iowarrior *dev = NULL;
        __u8 *buffer;
@@ -493,6 +493,7 @@ static int iowarrior_ioctl(struct inode *inode, struct file *file,
                return -ENOMEM;
 
        /* lock this object */
+       lock_kernel();
        mutex_lock(&dev->mutex);
 
        /* verify that the device wasn't unplugged */
@@ -584,6 +585,7 @@ static int iowarrior_ioctl(struct inode *inode, struct file *file,
 error_out:
        /* unlock the device */
        mutex_unlock(&dev->mutex);
+       unlock_kernel();
        kfree(buffer);
        return retval;
 }
@@ -719,7 +721,7 @@ static const struct file_operations iowarrior_fops = {
        .owner = THIS_MODULE,
        .write = iowarrior_write,
        .read = iowarrior_read,
-       .ioctl = iowarrior_ioctl,
+       .unlocked_ioctl = iowarrior_ioctl,
        .open = iowarrior_open,
        .release = iowarrior_release,
        .poll = iowarrior_poll,