]> git.karo-electronics.de Git - mv-sheeva.git/blobdiff - drivers/misc/phantom.c
Merge tag 'v2.6.37' of git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6
[mv-sheeva.git] / drivers / misc / phantom.c
index 75ee0d3f6f457707d79cbf5f5d021469710eb06d..b05db55c8c8e757c312184c797321942d814ec55 100644 (file)
@@ -24,7 +24,7 @@
 #include <linux/slab.h>
 #include <linux/phantom.h>
 #include <linux/sched.h>
-#include <linux/smp_lock.h>
+#include <linux/mutex.h>
 
 #include <asm/atomic.h>
 #include <asm/io.h>
@@ -38,6 +38,7 @@
 #define PHB_RUNNING            1
 #define PHB_NOT_OH             2
 
+static DEFINE_MUTEX(phantom_mutex);
 static struct class *phantom_class;
 static int phantom_major;
 
@@ -215,17 +216,17 @@ static int phantom_open(struct inode *inode, struct file *file)
        struct phantom_device *dev = container_of(inode->i_cdev,
                        struct phantom_device, cdev);
 
-       lock_kernel();
+       mutex_lock(&phantom_mutex);
        nonseekable_open(inode, file);
 
        if (mutex_lock_interruptible(&dev->open_lock)) {
-               unlock_kernel();
+               mutex_unlock(&phantom_mutex);
                return -ERESTARTSYS;
        }
 
        if (dev->opened) {
                mutex_unlock(&dev->open_lock);
-               unlock_kernel();
+               mutex_unlock(&phantom_mutex);
                return -EINVAL;
        }
 
@@ -236,7 +237,7 @@ static int phantom_open(struct inode *inode, struct file *file)
        atomic_set(&dev->counter, 0);
        dev->opened++;
        mutex_unlock(&dev->open_lock);
-       unlock_kernel();
+       mutex_unlock(&phantom_mutex);
        return 0;
 }
 
@@ -279,6 +280,7 @@ static const struct file_operations phantom_file_ops = {
        .unlocked_ioctl = phantom_ioctl,
        .compat_ioctl = phantom_compat_ioctl,
        .poll = phantom_poll,
+       .llseek = no_llseek,
 };
 
 static irqreturn_t phantom_isr(int irq, void *data)
@@ -341,8 +343,10 @@ static int __devinit phantom_probe(struct pci_dev *pdev,
        int retval;
 
        retval = pci_enable_device(pdev);
-       if (retval)
+       if (retval) {
+               dev_err(&pdev->dev, "pci_enable_device failed!\n");
                goto err;
+       }
 
        minor = phantom_get_free();
        if (minor == PHANTOM_MAX_MINORS) {
@@ -354,8 +358,10 @@ static int __devinit phantom_probe(struct pci_dev *pdev,
        phantom_devices[minor] = 1;
 
        retval = pci_request_regions(pdev, "phantom");
-       if (retval)
+       if (retval) {
+               dev_err(&pdev->dev, "pci_request_regions failed!\n");
                goto err_null;
+       }
 
        retval = -ENOMEM;
        pht = kzalloc(sizeof(*pht), GFP_KERNEL);