USB: auerwald: Push down the BKL into the driver
authorAlan Cox <alan@lxorguk.ukuu.org.uk>
Thu, 22 May 2008 21:46:25 +0000 (22:46 +0100)
committerGreg Kroah-Hartman <gregkh@suse.de>
Mon, 21 Jul 2008 22:16:20 +0000 (15:16 -0700)
Also fix the unknown ioctl return code

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

index 093938697426c3d2209b73754fa4341b519d672f..d2f61d5510e780ddd1c21fe10deca4fc3dadc660 100644 (file)
@@ -1421,7 +1421,8 @@ ofail:    mutex_unlock(&cp->mutex);
 
 
 /* IOCTL functions */
 
 
 /* IOCTL functions */
-static int auerchar_ioctl (struct inode *inode, struct file *file, unsigned int cmd, unsigned long arg)
+static long auerchar_ioctl(struct file *file, unsigned int cmd,
+                                                       unsigned long arg)
 {
        pauerchar_t ccp = (pauerchar_t) file->private_data;
        int ret = 0;
 {
        pauerchar_t ccp = (pauerchar_t) file->private_data;
        int ret = 0;
@@ -1452,7 +1453,7 @@ static int auerchar_ioctl (struct inode *inode, struct file *file, unsigned int
                mutex_unlock(&ccp->mutex);
                 return -ENODEV;
        }
                mutex_unlock(&ccp->mutex);
                 return -ENODEV;
        }
-
+       lock_kernel();
        switch (cmd) {
 
        /* return != 0 if Transmitt channel ready to send */
        switch (cmd) {
 
        /* return != 0 if Transmitt channel ready to send */
@@ -1547,9 +1548,10 @@ static int auerchar_ioctl (struct inode *inode, struct file *file, unsigned int
 
        default:
                dbg ("IOCTL_AU_UNKNOWN");
 
        default:
                dbg ("IOCTL_AU_UNKNOWN");
-               ret = -ENOIOCTLCMD;
+               ret = -ENOTTY;
                break;
         }
                break;
         }
+        unlock_kernel();
        /* release the mutexes */
        mutex_unlock(&cp->mutex);
        mutex_unlock(&ccp->mutex);
        /* release the mutexes */
        mutex_unlock(&cp->mutex);
        mutex_unlock(&ccp->mutex);
@@ -1860,7 +1862,7 @@ static const struct file_operations auerswald_fops =
        .llseek =       no_llseek,
        .read =         auerchar_read,
        .write =        auerchar_write,
        .llseek =       no_llseek,
        .read =         auerchar_read,
        .write =        auerchar_write,
-       .ioctl =        auerchar_ioctl,
+       .unlocked_ioctl = auerchar_ioctl,
        .open =         auerchar_open,
        .release =      auerchar_release,
 };
        .open =         auerchar_open,
        .release =      auerchar_release,
 };