[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <Y1TD2G9osaaJPanS@kernel.org>
Date: Sun, 23 Oct 2022 07:32:24 +0300
From: Jarkko Sakkinen <jarkko@...nel.org>
To: Lino Sanfilippo <LinoSanfilippo@....de>
Cc: peterhuewe@....de, jgg@...pe.ca, stefanb@...ux.vnet.ibm.com,
linux@...ewoehner.de, linux-integrity@...r.kernel.org,
linux-kernel@...r.kernel.org, jandryuk@...il.com,
pmenzel@...gen.mpg.de, l.sanfilippo@...bus.com, lukas@...ner.de,
p.rosenberger@...bus.com
Subject: Re: [PATCH v8 07/11] tpm, tpm_tis: do not check for the active
locality in interrupt handler
On Tue, Oct 18, 2022 at 01:57:28AM +0200, Lino Sanfilippo wrote:
> From: Lino Sanfilippo <l.sanfilippo@...bus.com>
>
> After driver initialization tpm_tis_data->locality may only be modified in
> case of a LOCALITY CHANGE interrupt. In this case the interrupt handler
> iterates over all localities only to assign the active one to
> tpm_tis_data->locality.
>
> However this information is never used any more, so the assignment is not
> needed.
> Furthermore without the assignment tpm_tis_data->locality cannot change any
> more at driver runtime, and thus no protection against concurrent
> modification is required when the variable is read at other places.
>
> So remove this iteration entirely.
>
> Signed-off-by: Lino Sanfilippo <l.sanfilippo@...bus.com>
Acked-by: Jarkko Sakkinen <jarkko@...nel.org>
> ---
> drivers/char/tpm/tpm_tis_core.c | 7 ++-----
> 1 file changed, 2 insertions(+), 5 deletions(-)
>
> diff --git a/drivers/char/tpm/tpm_tis_core.c b/drivers/char/tpm/tpm_tis_core.c
> index 181c291b0bb8..4336f7ea8c2b 100644
> --- a/drivers/char/tpm/tpm_tis_core.c
> +++ b/drivers/char/tpm/tpm_tis_core.c
> @@ -728,7 +728,7 @@ static irqreturn_t tis_int_handler(int dummy, void *dev_id)
> struct tpm_chip *chip = dev_id;
> struct tpm_tis_data *priv = dev_get_drvdata(&chip->dev);
> u32 interrupt;
> - int i, rc;
> + int rc;
>
> rc = tpm_tis_read32(priv, TPM_INT_STATUS(priv->locality), &interrupt);
> if (rc < 0)
> @@ -740,10 +740,7 @@ static irqreturn_t tis_int_handler(int dummy, void *dev_id)
> set_bit(TPM_TIS_IRQ_TESTED, &priv->flags);
> if (interrupt & TPM_INTF_DATA_AVAIL_INT)
> wake_up_interruptible(&priv->read_queue);
> - if (interrupt & TPM_INTF_LOCALITY_CHANGE_INT)
> - for (i = 0; i < 5; i++)
> - if (check_locality(chip, i))
> - break;
> +
> if (interrupt &
> (TPM_INTF_LOCALITY_CHANGE_INT | TPM_INTF_STS_VALID_INT |
> TPM_INTF_CMD_READY_INT))
> --
> 2.36.1
>
BR, Jarkko
Powered by blists - more mailing lists