From: "Daniel P. Smith" <[email protected]>

Validate that the input locality is within the correct range, as specified
by TCG standards, and increase the locality count also for the positive
localities.

Signed-off-by: Daniel P. Smith <[email protected]>
Signed-off-by: Ross Philipson <[email protected]>
Signed-off-by: Jarkko Sakkinen <[email protected]>
---
 drivers/char/tpm/tpm_tis_core.c | 8 +++++++-
 1 file changed, 7 insertions(+), 1 deletion(-)

diff --git a/drivers/char/tpm/tpm_tis_core.c b/drivers/char/tpm/tpm_tis_core.c
index 12a2340dd5e0..14a7e60bfbb8 100644
--- a/drivers/char/tpm/tpm_tis_core.c
+++ b/drivers/char/tpm/tpm_tis_core.c
@@ -233,10 +233,16 @@ static int tpm_tis_request_locality(struct tpm_chip 
*chip, int l)
        struct tpm_tis_data *priv = dev_get_drvdata(&chip->dev);
        int ret = 0;
 
+       if (l < 0 || l > TPM_MAX_LOCALITY) {
+               dev_warn(&chip->dev, "%s: failed to request unknown locality: 
%d\n",
+                        __func__, l);
+               return -EINVAL;
+       }
+
        mutex_lock(&priv->locality_count_mutex);
        if (priv->locality_count == 0)
                ret = __tpm_tis_request_locality(chip, l);
-       if (!ret)
+       if (ret >= 0)
                priv->locality_count++;
        mutex_unlock(&priv->locality_count_mutex);
        return ret;
-- 
2.43.7


Reply via email to