]> bbs.cooldavid.org Git - net-next-2.6.git/blobdiff - drivers/char/pcmcia/cm4000_cs.c
Merge branch 'for-next' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial
[net-next-2.6.git] / drivers / char / pcmcia / cm4000_cs.c
index c7b482d15e2adb0416785fc837cc9c18b9884667..d962f25dcc2a730b912c139f7b7ae5f7c408ce8d 100644 (file)
@@ -30,7 +30,7 @@
 #include <linux/fs.h>
 #include <linux/delay.h>
 #include <linux/bitrev.h>
-#include <linux/smp_lock.h>
+#include <linux/mutex.h>
 #include <linux/uaccess.h>
 #include <linux/io.h>
 
@@ -54,6 +54,8 @@
                           __func__ , ## args);         \
        } while (0)
 
+static DEFINE_MUTEX(cmm_mutex);
+
 #define        T_1SEC          (HZ)
 #define        T_10MSEC        msecs_to_jiffies(10)
 #define        T_20MSEC        msecs_to_jiffies(20)
@@ -1415,7 +1417,7 @@ static long cmm_ioctl(struct file *filp, unsigned int cmd, unsigned long arg)
               iminor(inode), ioctl_names[_IOC_NR(cmd)]);
 #endif
 
-       lock_kernel();
+       mutex_lock(&cmm_mutex);
        rc = -ENODEV;
        link = dev_table[iminor(inode)];
        if (!pcmcia_dev_present(link)) {
@@ -1623,7 +1625,7 @@ static long cmm_ioctl(struct file *filp, unsigned int cmd, unsigned long arg)
                rc = -ENOTTY;
        }
 out:
-       unlock_kernel();
+       mutex_unlock(&cmm_mutex);
        return rc;
 }
 
@@ -1637,7 +1639,7 @@ static int cmm_open(struct inode *inode, struct file *filp)
        if (minor >= CM4000_MAX_DEV)
                return -ENODEV;
 
-       lock_kernel();
+       mutex_lock(&cmm_mutex);
        link = dev_table[minor];
        if (link == NULL || !pcmcia_dev_present(link)) {
                ret = -ENODEV;
@@ -1664,7 +1666,7 @@ static int cmm_open(struct inode *inode, struct file *filp)
        /* opening will always block since the
         * monitor will be started by open, which
         * means we have to wait for ATR becoming
-        * vaild = block until valid (or card
+        * valid = block until valid (or card
         * inserted)
         */
        if (filp->f_flags & O_NONBLOCK) {
@@ -1682,7 +1684,7 @@ static int cmm_open(struct inode *inode, struct file *filp)
        DEBUGP(2, dev, "<- cmm_open\n");
        ret = nonseekable_open(inode, filp);
 out:
-       unlock_kernel();
+       mutex_unlock(&cmm_mutex);
        return ret;
 }
 
@@ -1864,6 +1866,7 @@ static const struct file_operations cm4000_fops = {
        .unlocked_ioctl = cmm_ioctl,
        .open   = cmm_open,
        .release= cmm_close,
+       .llseek = no_llseek,
 };
 
 static struct pcmcia_device_id cm4000_ids[] = {