[PATCH] tpm: Ensure that tpm chip has ops to check if it's defective

From: Mario Limonciello
Date: Thu Jun 22 2023 - 23:05:01 EST


The ibmvtpm doesn't have `chip->ops` set, and so trying to check
if it's a defective AMD fTPM doesn't work.

Add an extra check to tpm_amd_is_rng_defective() to ensure the
TPM being checked has `chip->ops`.

Cc: Linux regressions mailing list <regressions@xxxxxxxxxxxxxxx>
Reported-by: Aneesh Kumar K. V <aneesh.kumar@xxxxxxxxxxxxx>
Reported-by: Sachin Sant <sachinp@xxxxxxxxxxxxx>
Link: https://lore.kernel.org/lkml/99B81401-DB46-49B9-B321-CF832B50CAC3@xxxxxxxxxxxxx/
Tested-by: Sachin Sant <sachinp@xxxxxxxxxxxxx>
Fixes: bd8621ca1510 ("tpm: Add !tpm_amd_is_rng_defective() to the hwrng_unregister() call site")
Fixes: f1324bbc4011 ("tpm: disable hwrng for fTPM on some AMD designs")
Signed-off-by: Mario Limonciello <mario.limonciello@xxxxxxx>
---
drivers/char/tpm/tpm-chip.c | 3 +++
1 file changed, 3 insertions(+)

diff --git a/drivers/char/tpm/tpm-chip.c b/drivers/char/tpm/tpm-chip.c
index cd48033b804a..9ba433761e9a 100644
--- a/drivers/char/tpm/tpm-chip.c
+++ b/drivers/char/tpm/tpm-chip.c
@@ -524,6 +524,9 @@ static bool tpm_amd_is_rng_defective(struct tpm_chip *chip)
u64 version;
int ret;

+ if (!chip->ops)
+ return false;
+
if (!(chip->flags & TPM_CHIP_FLAG_TPM2))
return false;

--
2.34.1