[PATCH] tpm_tis: Fix incorrect arguments in tpm_tis_probe_irq_single

Gunnar Kudrjavets posted 1 patch 2 weeks, 2 days ago
drivers/char/tpm/tpm_tis_core.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
[PATCH] tpm_tis: Fix incorrect arguments in tpm_tis_probe_irq_single
Posted by Gunnar Kudrjavets 2 weeks, 2 days ago
The tpm_tis_write8() call specifies arguments in wrong order. Should be
(data, addr, value) not (data, value, addr). The initial correct order
was changed during the major refactoring when the code was split.

Fixes: 41a5e1cf1fe1 ("tpm/tpm_tis: Split tpm_tis driver into a core and TCG TIS compliant phy")
Signed-off-by: Gunnar Kudrjavets <gunnarku@amazon.com>
Reviewed-by: Justinien Bouron <jbouron@amazon.com>
---
 drivers/char/tpm/tpm_tis_core.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/drivers/char/tpm/tpm_tis_core.c b/drivers/char/tpm/tpm_tis_core.c
index 4b12c4b9da8b..8954a8660ffc 100644
--- a/drivers/char/tpm/tpm_tis_core.c
+++ b/drivers/char/tpm/tpm_tis_core.c
@@ -978,8 +978,8 @@ static int tpm_tis_probe_irq_single(struct tpm_chip *chip, u32 intmask,
 	 * will call disable_irq which undoes all of the above.
 	 */
 	if (!(chip->flags & TPM_CHIP_FLAG_IRQ)) {
-		tpm_tis_write8(priv, original_int_vec,
-			       TPM_INT_VECTOR(priv->locality));
+		tpm_tis_write8(priv, TPM_INT_VECTOR(priv->locality),
+			       original_int_vec);
 		rc = -1;
 	}


base-commit: f83ec76bf285bea5727f478a68b894f5543ca76e
--
2.47.3
Re: [PATCH] tpm_tis: Fix incorrect arguments in tpm_tis_probe_irq_single
Posted by Paul Menzel 2 weeks, 2 days ago
Dear Gunnar,


Thank you for your patch.

Am 15.09.25 um 20:20 schrieb Gunnar Kudrjavets:
> The tpm_tis_write8() call specifies arguments in wrong order. Should be
> (data, addr, value) not (data, value, addr). The initial correct order
> was changed during the major refactoring when the code was split.
> 
> Fixes: 41a5e1cf1fe1 ("tpm/tpm_tis: Split tpm_tis driver into a core and TCG TIS compliant phy")

     $ git describe 41a5e1cf1fe1
     v4.7-rc2-83-g41a5e1cf1fe1

Interesting, that this did not cause more havoc.

> Signed-off-by: Gunnar Kudrjavets <gunnarku@amazon.com>
> Reviewed-by: Justinien Bouron <jbouron@amazon.com>
> ---
>   drivers/char/tpm/tpm_tis_core.c | 4 ++--
>   1 file changed, 2 insertions(+), 2 deletions(-)
> 
> diff --git a/drivers/char/tpm/tpm_tis_core.c b/drivers/char/tpm/tpm_tis_core.c
> index 4b12c4b9da8b..8954a8660ffc 100644
> --- a/drivers/char/tpm/tpm_tis_core.c
> +++ b/drivers/char/tpm/tpm_tis_core.c
> @@ -978,8 +978,8 @@ static int tpm_tis_probe_irq_single(struct tpm_chip *chip, u32 intmask,
>   	 * will call disable_irq which undoes all of the above.
>   	 */
>   	if (!(chip->flags & TPM_CHIP_FLAG_IRQ)) {
> -		tpm_tis_write8(priv, original_int_vec,
> -			       TPM_INT_VECTOR(priv->locality));
> +		tpm_tis_write8(priv, TPM_INT_VECTOR(priv->locality),
> +			       original_int_vec);
>   		rc = -1;
>   	}

Reviewed-by: Paul Menzel <pmenzel@molgen.mpg.de>


Kind regards,

Paul
Re: [PATCH] tpm_tis: Fix incorrect arguments in tpm_tis_probe_irq_single
Posted by Jarkko Sakkinen 2 weeks, 2 days ago
On Mon, Sep 15, 2025 at 06:20:44PM +0000, Gunnar Kudrjavets wrote:
> The tpm_tis_write8() call specifies arguments in wrong order. Should be
> (data, addr, value) not (data, value, addr). The initial correct order
> was changed during the major refactoring when the code was split.
> 
> Fixes: 41a5e1cf1fe1 ("tpm/tpm_tis: Split tpm_tis driver into a core and TCG TIS compliant phy")
> Signed-off-by: Gunnar Kudrjavets <gunnarku@amazon.com>
> Reviewed-by: Justinien Bouron <jbouron@amazon.com>
> ---
>  drivers/char/tpm/tpm_tis_core.c | 4 ++--
>  1 file changed, 2 insertions(+), 2 deletions(-)
> 
> diff --git a/drivers/char/tpm/tpm_tis_core.c b/drivers/char/tpm/tpm_tis_core.c
> index 4b12c4b9da8b..8954a8660ffc 100644
> --- a/drivers/char/tpm/tpm_tis_core.c
> +++ b/drivers/char/tpm/tpm_tis_core.c
> @@ -978,8 +978,8 @@ static int tpm_tis_probe_irq_single(struct tpm_chip *chip, u32 intmask,
>  	 * will call disable_irq which undoes all of the above.
>  	 */
>  	if (!(chip->flags & TPM_CHIP_FLAG_IRQ)) {
> -		tpm_tis_write8(priv, original_int_vec,
> -			       TPM_INT_VECTOR(priv->locality));
> +		tpm_tis_write8(priv, TPM_INT_VECTOR(priv->locality),
> +			       original_int_vec);
>  		rc = -1;
>  	}
> 
> 
> base-commit: f83ec76bf285bea5727f478a68b894f5543ca76e
> --
> 2.47.3
> 

Amazing catch, thank you. Have you been able to verify this?

I'm asking this because post this there was a lot of unsuccesful
attempts to enable irqs in the tis driver (which have never really
worked too well since epoch) so perhaps this could move things
forward.

Thus, I'm interested do you happen to have a working testing
environment?


Reviewed-by: Jarkko Sakkinen <jarkko@kernel.org>

BR, Jarkko