tpm: Get rid of module locking
authorStefan Berger <stefanb@linux.vnet.ibm.com>
Mon, 29 Feb 2016 13:53:01 +0000 (08:53 -0500)
committerJarkko Sakkinen <jarkko.sakkinen@linux.intel.com>
Sat, 25 Jun 2016 14:26:35 +0000 (17:26 +0300)
Now that the tpm core has strong locking around 'ops' it is possible
to remove a TPM driver, module and all, even while user space still
has things like /dev/tpmX open. For consistency and simplicity, drop
the module locking entirely.

Signed-off-by: Stefan Berger <stefanb@linux.vnet.ibm.com>
Reviewed-by: Jason Gunthorpe <jgunthorpe@obsidianresearch.com>
Reviewed-by: Jarkko Sakkinen <jarkko.sakkinen@linux.intel.com>
Signed-off-by: Jarkko Sakkinen <jarkko.sakkinen@linux.intel.com>
drivers/char/tpm/tpm-chip.c

index 5793ea1..6636728 100644 (file)
@@ -57,9 +57,6 @@ int tpm_try_get_ops(struct tpm_chip *chip)
        if (!chip->ops)
                goto out_lock;
 
-       if (!try_module_get(chip->dev.parent->driver->owner))
-               goto out_lock;
-
        return 0;
 out_lock:
        up_read(&chip->ops_sem);
@@ -77,7 +74,6 @@ EXPORT_SYMBOL_GPL(tpm_try_get_ops);
  */
 void tpm_put_ops(struct tpm_chip *chip)
 {
-       module_put(chip->dev.parent->driver->owner);
        up_read(&chip->ops_sem);
        put_device(&chip->dev);
 }
@@ -183,7 +179,7 @@ struct tpm_chip *tpmm_chip_alloc(struct device *dev,
                goto out;
 
        cdev_init(&chip->cdev, &tpm_fops);
-       chip->cdev.owner = dev->driver->owner;
+       chip->cdev.owner = THIS_MODULE;
        chip->cdev.kobj.parent = &chip->dev.kobj;
 
        rc = devm_add_action(dev, (void (*)(void *)) put_device, &chip->dev);