USB: rio100: Push down the BKL
authorAlan Cox <alan@lxorguk.ukuu.org.uk>
Thu, 22 May 2008 21:47:31 +0000 (22:47 +0100)
committerGreg Kroah-Hartman <gregkh@suse.de>
Mon, 21 Jul 2008 22:16:20 +0000 (15:16 -0700)
The BKL is actually probably not needed as the mutex seems sufficient. If
so then a further patch to drop it would be a good followup.

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

index 330c18e..248a12a 100644 (file)
@@ -104,9 +104,7 @@ static int close_rio(struct inode *inode, struct file *file)
        return 0;
 }
 
-static int
-ioctl_rio(struct inode *inode, struct file *file, unsigned int cmd,
-         unsigned long arg)
+static long ioctl_rio(struct file *file, unsigned int cmd, unsigned long arg)
 {
        struct RioCommand rio_cmd;
        struct rio_usb_data *rio = &rio_instance;
@@ -116,6 +114,7 @@ ioctl_rio(struct inode *inode, struct file *file, unsigned int cmd,
        int retries;
        int retval=0;
 
+       lock_kernel();
        mutex_lock(&(rio->lock));
         /* Sanity check to make sure rio is connected, powered, etc */
         if (rio->present == 0 || rio->rio_dev == NULL) {
@@ -254,6 +253,7 @@ ioctl_rio(struct inode *inode, struct file *file, unsigned int cmd,
 
 err_out:
        mutex_unlock(&(rio->lock));
+       unlock_kernel();
        return retval;
 }
 
@@ -433,7 +433,7 @@ file_operations usb_rio_fops = {
        .owner =        THIS_MODULE,
        .read =         read_rio,
        .write =        write_rio,
-       .ioctl =        ioctl_rio,
+       .unlocked_ioctl = ioctl_rio,
        .open =         open_rio,
        .release =      close_rio,
 };