Merge branch 'timers/for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git...
[cascardo/linux.git] / drivers / s390 / char / vmlogrdr.c
index 2c2428c..c31faef 100644 (file)
@@ -25,6 +25,7 @@
 #include <linux/kmod.h>
 #include <linux/cdev.h>
 #include <linux/device.h>
+#include <linux/smp_lock.h>
 #include <linux/string.h>
 
 
@@ -216,9 +217,7 @@ static int vmlogrdr_get_recording_class_AB(void)
        char *tail;
        int len,i;
 
-       printk (KERN_DEBUG "vmlogrdr: query command: %s\n", cp_command);
        cpcmd(cp_command, cp_response, sizeof(cp_response), NULL);
-       printk (KERN_DEBUG "vmlogrdr: response: %s", cp_response);
        len = strnlen(cp_response,sizeof(cp_response));
        // now the parsing
        tail=strnchr(cp_response,len,'=');
@@ -268,11 +267,7 @@ static int vmlogrdr_recording(struct vmlogrdr_priv_t * logptr,
                         logptr->recording_name,
                         qid_string);
 
-               printk (KERN_DEBUG "vmlogrdr: recording command: %s\n",
-                       cp_command);
                cpcmd(cp_command, cp_response, sizeof(cp_response), NULL);
-               printk (KERN_DEBUG "vmlogrdr: recording response: %s",
-                       cp_response);
        }
 
        memset(cp_command, 0x00, sizeof(cp_command));
@@ -282,10 +277,7 @@ static int vmlogrdr_recording(struct vmlogrdr_priv_t * logptr,
                onoff,
                qid_string);
 
-       printk (KERN_DEBUG "vmlogrdr: recording command: %s\n", cp_command);
        cpcmd(cp_command, cp_response, sizeof(cp_response), NULL);
-       printk (KERN_DEBUG "vmlogrdr: recording response: %s",
-               cp_response);
        /* The recording command will usually answer with 'Command complete'
         * on success, but when the specific service was never connected
         * before then there might be an additional informational message
@@ -319,9 +311,11 @@ static int vmlogrdr_open (struct inode *inode, struct file *filp)
                return -ENOSYS;
 
        /* Besure this device hasn't already been opened */
+       lock_kernel();
        spin_lock_bh(&logptr->priv_lock);
        if (logptr->dev_in_use) {
                spin_unlock_bh(&logptr->priv_lock);
+               unlock_kernel();
                return -EBUSY;
        }
        logptr->dev_in_use = 1;
@@ -365,7 +359,9 @@ static int vmlogrdr_open (struct inode *inode, struct file *filp)
                   || (logptr->iucv_path_severed));
        if (logptr->iucv_path_severed)
                goto out_record;
-       return nonseekable_open(inode, filp);
+       ret = nonseekable_open(inode, filp);
+       unlock_kernel();
+       return ret;
 
 out_record:
        if (logptr->autorecording)
@@ -375,6 +371,7 @@ out_path:
        logptr->path = NULL;
 out_dev:
        logptr->dev_in_use = 0;
+       unlock_kernel();
        return -EIO;
 }
 
@@ -567,10 +564,7 @@ static ssize_t vmlogrdr_purge_store(struct device * dev,
                         "RECORDING %s PURGE ",
                         priv->recording_name);
 
-       printk (KERN_DEBUG "vmlogrdr: recording command: %s\n", cp_command);
        cpcmd(cp_command, cp_response, sizeof(cp_response), NULL);
-       printk (KERN_DEBUG "vmlogrdr: recording response: %s",
-               cp_response);
 
        return count;
 }
@@ -682,28 +676,20 @@ static int vmlogrdr_register_driver(void)
 
        /* Register with iucv driver */
        ret = iucv_register(&vmlogrdr_iucv_handler, 1);
-       if (ret) {
-               printk (KERN_ERR "vmlogrdr: failed to register with "
-                       "iucv driver\n");
+       if (ret)
                goto out;
-       }
 
        ret = driver_register(&vmlogrdr_driver);
-       if (ret) {
-               printk(KERN_ERR "vmlogrdr: failed to register driver.\n");
+       if (ret)
                goto out_iucv;
-       }
 
        ret = driver_create_file(&vmlogrdr_driver,
                                 &driver_attr_recording_status);
-       if (ret) {
-               printk(KERN_ERR "vmlogrdr: failed to add driver attribute.\n");
+       if (ret)
                goto out_driver;
-       }
 
        vmlogrdr_class = class_create(THIS_MODULE, "vmlogrdr");
        if (IS_ERR(vmlogrdr_class)) {
-               printk(KERN_ERR "vmlogrdr: failed to create class.\n");
                ret = PTR_ERR(vmlogrdr_class);
                vmlogrdr_class = NULL;
                goto out_attr;
@@ -871,12 +857,10 @@ static int __init vmlogrdr_init(void)
        rc = vmlogrdr_register_cdev(dev);
        if (rc)
                goto cleanup;
-       printk (KERN_INFO "vmlogrdr: driver loaded\n");
        return 0;
 
 cleanup:
        vmlogrdr_cleanup();
-       printk (KERN_ERR "vmlogrdr: driver not loaded.\n");
        return rc;
 }
 
@@ -884,7 +868,6 @@ cleanup:
 static void __exit vmlogrdr_exit(void)
 {
        vmlogrdr_cleanup();
-       printk (KERN_INFO "vmlogrdr: driver unloaded\n");
        return;
 }