s390/scm: remove superfluous lock
authorSebastian Ott <sebott@linux.vnet.ibm.com>
Tue, 4 Sep 2012 17:36:41 +0000 (19:36 +0200)
committerMartin Schwidefsky <schwidefsky@de.ibm.com>
Wed, 26 Sep 2012 13:45:09 +0000 (15:45 +0200)
Remove the spinlock from struct scm_device. drvdata and attributes
are guarded via device_lock.

Signed-off-by: Sebastian Ott <sebott@linux.vnet.ibm.com>
Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
arch/s390/include/asm/eadm.h
drivers/s390/block/scm_drv.c
drivers/s390/cio/scm.c

index 4d6e103f6e26b727345563ae005ad178eebb2dad..8d4847191ecc52121cbe2afaa04fff7e2c6d2ad8 100644 (file)
@@ -3,7 +3,6 @@
 
 #include <linux/types.h>
 #include <linux/device.h>
-#include <linux/spinlock.h>
 
 struct arqb {
        u64 data;
@@ -83,7 +82,6 @@ struct scm_device {
        u64 size;
        unsigned int nr_max_block;
        struct device dev;
-       spinlock_t lock;
        struct {
                unsigned int persistence:4;
                unsigned int oper_state:4;
index fce711a6306001cf19e6aff7a2be93d82ac2b7de..349966f6fc529cf1ed695fed4abaf6f6465c2398 100644 (file)
@@ -9,7 +9,6 @@
 #define pr_fmt(fmt) KMSG_COMPONENT ": " fmt
 
 #include <linux/module.h>
-#include <linux/spinlock.h>
 #include <linux/slab.h>
 #include <asm/eadm.h>
 #include "scm_blk.h"
@@ -37,15 +36,10 @@ static int scm_probe(struct scm_device *scmdev)
        if (!bdev)
                return -ENOMEM;
 
-       spin_lock_irq(&scmdev->lock);
        dev_set_drvdata(&scmdev->dev, bdev);
-       spin_unlock_irq(&scmdev->lock);
-
        ret = scm_blk_dev_setup(bdev, scmdev);
        if (ret) {
-               spin_lock_irq(&scmdev->lock);
                dev_set_drvdata(&scmdev->dev, NULL);
-               spin_unlock_irq(&scmdev->lock);
                kfree(bdev);
                goto out;
        }
@@ -56,12 +50,9 @@ out:
 
 static int scm_remove(struct scm_device *scmdev)
 {
-       struct scm_blk_dev *bdev;
+       struct scm_blk_dev *bdev = dev_get_drvdata(&scmdev->dev);
 
-       spin_lock_irq(&scmdev->lock);
-       bdev = dev_get_drvdata(&scmdev->dev);
        dev_set_drvdata(&scmdev->dev, NULL);
-       spin_unlock_irq(&scmdev->lock);
        scm_blk_dev_cleanup(bdev);
        kfree(bdev);
 
index aa4476e92050bf99576fcd75d9a0ecfa9286a4fb..bcf20f3aa51b67fd148ae807e0cbc070e09e8b22 100644 (file)
@@ -5,7 +5,6 @@
  * Author(s): Sebastian Ott <sebott@linux.vnet.ibm.com>
  */
 
-#include <linux/spinlock.h>
 #include <linux/device.h>
 #include <linux/module.h>
 #include <linux/mutex.h>
@@ -134,9 +133,9 @@ static ssize_t show_##name(struct device *dev,                              \
        struct scm_device *scmdev = to_scm_dev(dev);                    \
        int ret;                                                        \
                                                                        \
-       spin_lock(&scmdev->lock);                                       \
+       device_lock(dev);                                               \
        ret = sprintf(buf, "%u\n", scmdev->attrs.name);                 \
-       spin_unlock(&scmdev->lock);                                     \
+       device_unlock(dev);                                             \
                                                                        \
        return ret;                                                     \
 }                                                                      \
@@ -193,7 +192,6 @@ static void scmdev_setup(struct scm_device *scmdev, struct sale *sale,
        scmdev->dev.bus = &scm_bus_type;
        scmdev->dev.release = scmdev_release;
        scmdev->dev.groups = scmdev_attr_groups;
-       spin_lock_init(&scmdev->lock);
 }
 
 /*