tpm: Remove tpm_find_get_ops
Subsystems (2)
PATCH 1/1 tpm: Remove tpm_find_get_ops
tpm_find_get_ops() looks for the first valid TPM if the caller passes in NULL. All internal users have been converted to either associate themselves with a TPM directly, or call tpm_default_chip() as part of their setup. Remove the no longer necessary tpm_find_get_ops().
---
(Separating this out from the exclusive access series, because I think this bit is uncontroversial and is a legit cleanup.)
drivers/char/tpm/tpm-chip.c | 36 -------------------------------- drivers/char/tpm/tpm-interface.c | 20 ++++++++++++++---- drivers/char/tpm/tpm.h | 1 - drivers/char/tpm/tpm_tis_core.c | 3 +-- 4 files changed, 17 insertions(+), 43 deletions(-)
drivers/char/tpm/tpm-chip.c +0 -36
@@ -230,42 +230,6 @@ struct tpm_chip *tpm_default_chip(void) }EXPORT_SYMBOL_GPL (tpm_default_chip); -/** -* tpm_find_get_ops() - find and reserve a TPM chip -* @chip: a &struct tpm_chip instance, %NULL for the default chip -* -* Finds a TPM chip and reserves its class device and operations. The chip must -* be released with tpm_put_ops() after use. -* This function is for internal use only. It supports existing TPM callers -* by accepting NULL, but those callers should be converted to pass in a chip -* directly. -* -* Return: -* A reserved &struct tpm_chip instance. -* %NULL if a chip is not found. -* %NULL if the chip is not available. -*/ -struct tpm_chip *tpm_find_get_ops (struct tpm_chip *chip) -{ -int rc; - -if (chip) { -if (!tpm_try_get_ops (chip)) -return chip; -return NULL ; - } - - chip =tpm_default_chip (); -if (!chip) -return NULL ; - rc =tpm_try_get_ops (chip); -/* release additional reference we got from tpm_default_chip() */ -put_device (&chip->dev); -if (rc) -return NULL ; -return chip; -} -/** * tpm_dev_release() - free chip memory and the device number * @dev: the character device for the TPM chip
drivers/char/tpm/tpm-interface.c +16 -4
@@ -313,10 +313,13 @@ int tpm_is_tpm2(struct tpm_chip *chip) {int rc; - chip =tpm_find_get_ops (chip);if (!chip)return -ENODEV ; + rc =tpm_try_get_ops (chip); +if (rc) +return rc; + rc = (chip->flags &TPM_CHIP_FLAG_TPM2 ) !=0 ;tpm_put_ops (chip);
@@ -338,10 +341,13 @@ int tpm_pcr_read(struct tpm_chip *chip, u32 pcr_idx, {int rc; - chip =tpm_find_get_ops (chip);if (!chip)return -ENODEV ; + rc =tpm_try_get_ops (chip); +if (rc) +return rc; +if (chip->flags &TPM_CHIP_FLAG_TPM2 ) rc =tpm2_pcr_read (chip, pcr_idx, digest,NULL );else
@@ -369,10 +375,13 @@ int tpm_pcr_extend(struct tpm_chip *chip, u32 pcr_idx,int rc;int i; - chip =tpm_find_get_ops (chip);if (!chip)return -ENODEV ; + rc =tpm_try_get_ops (chip); +if (rc) +return rc; +for (i =0 ; i < chip->nr_allocated_banks; i++) {if (digests[i].alg_id != chip->allocated_banks[i].alg_id) { rc = -EINVAL ;
@@ -492,10 +501,13 @@ int tpm_get_random(struct tpm_chip *chip, u8 *out, size_t max)if (!out || max >TPM_MAX_RNG_DATA )return -EINVAL ; - chip =tpm_find_get_ops (chip);if (!chip)return -ENODEV ; + rc =tpm_try_get_ops (chip); +if (rc) +return rc; +if (chip->flags &TPM_CHIP_FLAG_TPM2 ) rc =tpm2_get_random (chip, out, max);else
drivers/char/tpm/tpm.h +0 -1
@@ -267,7 +267,6 @@ static inline void tpm_msleep(unsigned int delay_msec)int tpm_chip_bootstrap (struct tpm_chip *chip);int tpm_chip_start (struct tpm_chip *chip);void tpm_chip_stop (struct tpm_chip *chip); -struct tpm_chip *tpm_find_get_ops (struct tpm_chip *chip);struct tpm_chip *tpm_chip_alloc (struct device *dev,const struct tpm_class_ops *ops);
drivers/char/tpm/tpm_tis_core.c +1 -2
@@ -265,8 +265,7 @@ static u8 tpm_tis_status(struct tpm_chip *chip)/* * Dump stack for forensics, as invalid TPM_STS.x could be -* potentially triggered by impaired tpm_try_get_ops() or -* tpm_find_get_ops(). +* potentially triggered by impaired tpm_try_get_ops(). */ dump_stack (); }
Signature · 1 line
2.52.0
Quoted 156 lines · Jonathan McDowell
tpm_find_get_ops()looks for the first valid TPM if the caller passes in NULL. All internal users have been converted to either associate themselves with a TPM directly, or calltpm_default_chip()as part of their setup. Remove the no longer necessarytpm_find_get_ops().Signed-off-by Jonathan McDowell <[email protected]>---
(Separating this out from the exclusive access series, because I think this bit is uncontroversial and is a legit cleanup.)drivers/char/tpm/tpm-chip.c | 36 -------------------------------- drivers/char/tpm/tpm-interface.c | 20 ++++++++++++++---- drivers/char/tpm/tpm.h | 1 - drivers/char/tpm/tpm_tis_core.c | 3 +-- 4 files changed, 17 insertions(+), 43 deletions(-)drivers/char/tpm/tpm-chip.c +0
-36@@ -230,42 +230,6 @@ struct tpm_chip *tpm_default_chip(void) }EXPORT_SYMBOL_GPL (tpm_default_chip); -/** -* tpm_find_get_ops() - find and reserve a TPM chip -* @chip: a &struct tpm_chip instance, %NULL for the default chip -* -* Finds a TPM chip and reserves its class device and operations. The chip must -* be released with tpm_put_ops() after use. -* This function is for internal use only. It supports existing TPM callers -* by accepting NULL, but those callers should be converted to pass in a chip -* directly. -* -* Return: -* A reserved &struct tpm_chip instance. -* %NULL if a chip is not found. -* %NULL if the chip is not available. -*/ -struct tpm_chip *tpm_find_get_ops (struct tpm_chip *chip) -{ -int rc; - -if (chip) { -if (!tpm_try_get_ops (chip)) -return chip; -return NULL ; - } - - chip =tpm_default_chip (); -if (!chip) -return NULL ; - rc =tpm_try_get_ops (chip); -/* release additional reference we got from tpm_default_chip() */ -put_device (&chip->dev); -if (rc) -return NULL ; -return chip; -} -/** * tpm_dev_release() - free chip memory and the device number * @dev: the character device for the TPM chip drivers/char/tpm/tpm-interface.c +16
-4@@ -313,10 +313,13 @@ int tpm_is_tpm2(struct tpm_chip *chip) {int rc; - chip =tpm_find_get_ops (chip);if (!chip)return -ENODEV ; + rc =tpm_try_get_ops (chip); +if (rc) +return rc; + rc = (chip->flags &TPM_CHIP_FLAG_TPM2 ) !=0 ;tpm_put_ops (chip);@@ -338,10 +341,13 @@ int tpm_pcr_read(struct tpm_chip *chip, u32 pcr_idx, {int rc; - chip =tpm_find_get_ops (chip);if (!chip)return -ENODEV ; + rc =tpm_try_get_ops (chip); +if (rc) +return rc; +if (chip->flags &TPM_CHIP_FLAG_TPM2 ) rc =tpm2_pcr_read (chip, pcr_idx, digest,NULL );else @@ -369,10 +375,13 @@ int tpm_pcr_extend(struct tpm_chip *chip, u32 pcr_idx,int rc;int i; - chip =tpm_find_get_ops (chip);if (!chip)return -ENODEV ; + rc =tpm_try_get_ops (chip); +if (rc) +return rc; +for (i =0 ; i < chip->nr_allocated_banks; i++) {if (digests[i].alg_id != chip->allocated_banks[i].alg_id) { rc = -EINVAL ;@@ -492,10 +501,13 @@ int tpm_get_random(struct tpm_chip *chip, u8 *out, size_t max)if (!out || max >TPM_MAX_RNG_DATA )return -EINVAL ; - chip =tpm_find_get_ops (chip);if (!chip)return -ENODEV ; + rc =tpm_try_get_ops (chip); +if (rc) +return rc; +if (chip->flags &TPM_CHIP_FLAG_TPM2 ) rc =tpm2_get_random (chip, out, max);else drivers/char/tpm/tpm.h +0
-1@@ -267,7 +267,6 @@ static inline void tpm_msleep(unsigned int delay_msec)int tpm_chip_bootstrap (struct tpm_chip *chip);int tpm_chip_start (struct tpm_chip *chip);void tpm_chip_stop (struct tpm_chip *chip); -struct tpm_chip *tpm_find_get_ops (struct tpm_chip *chip);struct tpm_chip *tpm_chip_alloc (struct device *dev,const struct tpm_class_ops *ops);drivers/char/tpm/tpm_tis_core.c +1
-2@@ -265,8 +265,7 @@ static u8 tpm_tis_status(struct tpm_chip *chip)/* * Dump stack for forensics, as invalid TPM_STS.x could be -* potentially triggered by impaired tpm_try_get_ops() or -* tpm_find_get_ops(). +* potentially triggered by impaired tpm_try_get_ops(). */ dump_stack (); }Signature · 1 line
2.52.0
Thanks. I changed author to @meta.com in order to address checkpatch complaint.
It's pushed to master/next.
BR, Jarkko