/* 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;
                mutex_unlock(&ccp->mutex);
                 return -ENODEV;
        }
-
+       lock_kernel();
        switch (cmd) {
 
        /* return != 0 if Transmitt channel ready to send */
 
        default:
                dbg ("IOCTL_AU_UNKNOWN");
-               ret = -ENOIOCTLCMD;
+               ret = -ENOTTY;
                break;
         }
+        unlock_kernel();
        /* release the mutexes */
        mutex_unlock(&cp->mutex);
        mutex_unlock(&ccp->mutex);
        .llseek =       no_llseek,
        .read =         auerchar_read,
        .write =        auerchar_write,
-       .ioctl =        auerchar_ioctl,
+       .unlocked_ioctl = auerchar_ioctl,
        .open =         auerchar_open,
        .release =      auerchar_release,
 };