Merge branch 'llseek' of git://git.kernel.org/pub/scm/linux/kernel/git/arnd/bkl
[linux-2.6.git] / drivers / char / lp.c
index d234411..97c3edb 100644 (file)
 #include <linux/device.h>
 #include <linux/wait.h>
 #include <linux/jiffies.h>
-#include <linux/smp_lock.h>
+#include <linux/mutex.h>
 #include <linux/compat.h>
 
 #include <linux/parport.h>
 /* if you have more than 8 printers, remember to increase LP_NO */
 #define LP_NO 8
 
+static DEFINE_MUTEX(lp_mutex);
 static struct lp_struct lp_table[LP_NO];
 
 static unsigned int lp_count = 0;
@@ -493,7 +494,7 @@ static int lp_open(struct inode * inode, struct file * file)
        unsigned int minor = iminor(inode);
        int ret = 0;
 
-       lock_kernel();
+       mutex_lock(&lp_mutex);
        if (minor >= LP_NO) {
                ret = -ENXIO;
                goto out;
@@ -554,7 +555,7 @@ static int lp_open(struct inode * inode, struct file * file)
        lp_release_parport (&lp_table[minor]);
        lp_table[minor].current_mode = IEEE1284_MODE_COMPAT;
 out:
-       unlock_kernel();
+       mutex_unlock(&lp_mutex);
        return ret;
 }
 
@@ -680,7 +681,7 @@ static long lp_ioctl(struct file *file, unsigned int cmd,
        int ret;
 
        minor = iminor(file->f_path.dentry->d_inode);
-       lock_kernel();
+       mutex_lock(&lp_mutex);
        switch (cmd) {
        case LPSETTIMEOUT:
                if (copy_from_user(&par_timeout, (void __user *)arg,
@@ -694,7 +695,7 @@ static long lp_ioctl(struct file *file, unsigned int cmd,
                ret = lp_do_ioctl(minor, cmd, arg, (void __user *)arg);
                break;
        }
-       unlock_kernel();
+       mutex_unlock(&lp_mutex);
 
        return ret;
 }
@@ -709,7 +710,7 @@ static long lp_compat_ioctl(struct file *file, unsigned int cmd,
        int ret;
 
        minor = iminor(file->f_path.dentry->d_inode);
-       lock_kernel();
+       mutex_lock(&lp_mutex);
        switch (cmd) {
        case LPSETTIMEOUT:
                tc = compat_ptr(arg);
@@ -730,7 +731,7 @@ static long lp_compat_ioctl(struct file *file, unsigned int cmd,
                ret = lp_do_ioctl(minor, cmd, arg, compat_ptr(arg));
                break;
        }
-       unlock_kernel();
+       mutex_unlock(&lp_mutex);
 
        return ret;
 }