]> git.kernelconcepts.de Git - karo-tx-linux.git/blobdiff - drivers/char/tpm/tpm-chip.c
Merge branch 'akpm' (patches from Andrew)
[karo-tx-linux.git] / drivers / char / tpm / tpm-chip.c
index 447b6ca098261874a5d3ea0f66bccac91374bad4..a77262d31911a1dc65c227f7d237fd3c61300bea 100644 (file)
@@ -127,6 +127,7 @@ static void tpm_dev_release(struct device *dev)
        idr_remove(&dev_nums_idr, chip->dev_num);
        mutex_unlock(&idr_lock);
 
+       kfree(chip->log.bios_event_log);
        kfree(chip);
 }
 
@@ -276,27 +277,6 @@ static void tpm_del_char_device(struct tpm_chip *chip)
        up_write(&chip->ops_sem);
 }
 
-static int tpm1_chip_register(struct tpm_chip *chip)
-{
-       if (chip->flags & TPM_CHIP_FLAG_TPM2)
-               return 0;
-
-       tpm_sysfs_add_device(chip);
-
-       chip->bios_dir = tpm_bios_log_setup(dev_name(&chip->dev));
-
-       return 0;
-}
-
-static void tpm1_chip_unregister(struct tpm_chip *chip)
-{
-       if (chip->flags & TPM_CHIP_FLAG_TPM2)
-               return;
-
-       if (chip->bios_dir)
-               tpm_bios_log_teardown(chip->bios_dir);
-}
-
 static void tpm_del_legacy_sysfs(struct tpm_chip *chip)
 {
        struct attribute **i;
@@ -363,20 +343,20 @@ int tpm_chip_register(struct tpm_chip *chip)
                        return rc;
        }
 
-       rc = tpm1_chip_register(chip);
-       if (rc)
+       tpm_sysfs_add_device(chip);
+
+       rc = tpm_bios_log_setup(chip);
+       if (rc != 0 && rc != -ENODEV)
                return rc;
 
        tpm_add_ppi(chip);
 
        rc = tpm_add_char_device(chip);
        if (rc) {
-               tpm1_chip_unregister(chip);
+               tpm_bios_log_teardown(chip);
                return rc;
        }
 
-       chip->flags |= TPM_CHIP_FLAG_REGISTERED;
-
        rc = tpm_add_legacy_sysfs(chip);
        if (rc) {
                tpm_chip_unregister(chip);
@@ -402,12 +382,8 @@ EXPORT_SYMBOL_GPL(tpm_chip_register);
  */
 void tpm_chip_unregister(struct tpm_chip *chip)
 {
-       if (!(chip->flags & TPM_CHIP_FLAG_REGISTERED))
-               return;
-
        tpm_del_legacy_sysfs(chip);
-
-       tpm1_chip_unregister(chip);
+       tpm_bios_log_teardown(chip);
        tpm_del_char_device(chip);
 }
 EXPORT_SYMBOL_GPL(tpm_chip_unregister);