]> git.baikalelectronics.ru Git - kernel.git/commitdiff
tpm: Don't make log failures fatal
authorMatthew Garrett <matthewgarrett@google.com>
Thu, 2 Jan 2020 21:55:18 +0000 (13:55 -0800)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Fri, 17 Apr 2020 08:50:11 +0000 (10:50 +0200)
commit 16b5490e63d11c3b2819a1708802ed19f62a790c upstream.

If a TPM is in disabled state, it's reasonable for it to have an empty
log. Bailing out of probe in this case means that the PPI interface
isn't available, so there's no way to then enable the TPM from the OS.
In general it seems reasonable to ignore log errors - they shouldn't
interfere with any other TPM functionality.

Signed-off-by: Matthew Garrett <matthewgarrett@google.com>
Cc: stable@vger.kernel.org # 4.19.x
Reviewed-by: Jerry Snitselaar <jsnitsel@redhat.com>
Reviewed-by: Jarkko Sakkinen <jarkko.sakkinen@linux.intel.com>
Signed-off-by: Jarkko Sakkinen <jarkko.sakkinen@linux.intel.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/char/tpm/eventlog/common.c
drivers/char/tpm/tpm-chip.c
drivers/char/tpm/tpm.h

index 7a0fca659b6a6dd75ff43f7021e04986c403dc49..7460f230bae4c6dbc8ed68acfbb42200a0c5a9b0 100644 (file)
@@ -99,11 +99,8 @@ static int tpm_read_log(struct tpm_chip *chip)
  *
  * If an event log is found then the securityfs files are setup to
  * export it to userspace, otherwise nothing is done.
- *
- * Returns -ENODEV if the firmware has no event log or securityfs is not
- * supported.
  */
-int tpm_bios_log_setup(struct tpm_chip *chip)
+void tpm_bios_log_setup(struct tpm_chip *chip)
 {
        const char *name = dev_name(&chip->dev);
        unsigned int cnt;
@@ -112,7 +109,7 @@ int tpm_bios_log_setup(struct tpm_chip *chip)
 
        rc = tpm_read_log(chip);
        if (rc < 0)
-               return rc;
+               return;
        log_version = rc;
 
        cnt = 0;
@@ -158,13 +155,12 @@ int tpm_bios_log_setup(struct tpm_chip *chip)
                cnt++;
        }
 
-       return 0;
+       return;
 
 err:
-       rc = PTR_ERR(chip->bios_dir[cnt]);
        chip->bios_dir[cnt] = NULL;
        tpm_bios_log_teardown(chip);
-       return rc;
+       return;
 }
 
 void tpm_bios_log_teardown(struct tpm_chip *chip)
index 3d6d394a866188107f48495298dfe5a43d8e93f0..58073836b5555d1f5b540434cb92acb5c3b264e5 100644 (file)
@@ -596,9 +596,7 @@ int tpm_chip_register(struct tpm_chip *chip)
 
        tpm_sysfs_add_device(chip);
 
-       rc = tpm_bios_log_setup(chip);
-       if (rc != 0 && rc != -ENODEV)
-               return rc;
+       tpm_bios_log_setup(chip);
 
        tpm_add_ppi(chip);
 
index a7fea3e0ca86a992b4c02dc9097eb25b06046230..218cb496222a57b00a90f9ea4dc739a70ead58ac 100644 (file)
@@ -464,7 +464,7 @@ int tpm2_prepare_space(struct tpm_chip *chip, struct tpm_space *space, u8 *cmd,
 int tpm2_commit_space(struct tpm_chip *chip, struct tpm_space *space, void *buf,
                      size_t *bufsiz);
 
-int tpm_bios_log_setup(struct tpm_chip *chip);
+void tpm_bios_log_setup(struct tpm_chip *chip);
 void tpm_bios_log_teardown(struct tpm_chip *chip);
 int tpm_dev_common_init(void);
 void tpm_dev_common_exit(void);