tpm, tpm_tis: Reserve locality in tpm_tis_resume()
authorJarkko Sakkinen <jarkko@kernel.org>
Mon, 10 May 2021 12:28:31 +0000 (15:28 +0300)
committerJarkko Sakkinen <jarkko@kernel.org>
Wed, 12 May 2021 19:36:42 +0000 (22:36 +0300)
Reserve locality in tpm_tis_resume(), as it could be unsert after waking
up from a sleep state.

Cc: stable@vger.kernel.org
Cc: Lino Sanfilippo <LinoSanfilippo@gmx.de>
Reported-by: Hans de Goede <hdegoede@redhat.com>
Fixes: a3fbfae82b4c ("tpm: take TPM chip power gating out of tpm_transmit()")
Signed-off-by: Jarkko Sakkinen <jarkko@kernel.org>
drivers/char/tpm/tpm_tis_core.c

index 6fa150a..55b9d39 100644 (file)
@@ -1125,12 +1125,20 @@ int tpm_tis_resume(struct device *dev)
        if (ret)
                return ret;
 
-       /* TPM 1.2 requires self-test on resume. This function actually returns
+       /*
+        * TPM 1.2 requires self-test on resume. This function actually returns
         * an error code but for unknown reason it isn't handled.
         */
-       if (!(chip->flags & TPM_CHIP_FLAG_TPM2))
+       if (!(chip->flags & TPM_CHIP_FLAG_TPM2)) {
+               ret = request_locality(chip, 0);
+               if (ret < 0)
+                       return ret;
+
                tpm1_do_selftest(chip);
 
+               release_locality(chip, 0);
+       }
+
        return 0;
 }
 EXPORT_SYMBOL_GPL(tpm_tis_resume);