diff mbox

tpm: Return the actual size when receiving an unsupported command

Message ID 20180615121821.23376-1-Ricardo.Schwarzmeier@infineon.com (mailing list archive)
State New, archived
Headers show

Commit Message

Ricardo Schwarzmeier June 15, 2018, 12:18 p.m. UTC
The command size is computed for the header anyway.
It can as well indicate the correct number of bytes to read from the driver.

Signed-off-by: Ricardo Schwarzmeier <Ricardo.Schwarzmeier@infineon.com>
---
 drivers/char/tpm/tpm-interface.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

Comments

Jarkko Sakkinen June 19, 2018, 12:53 p.m. UTC | #1
On Fri, Jun 15, 2018 at 02:18:21PM +0200, Ricardo Schwarzmeier wrote:
> The command size is computed for the header anyway.
> It can as well indicate the correct number of bytes to read from the driver.
> 
> Signed-off-by: Ricardo Schwarzmeier <Ricardo.Schwarzmeier@infineon.com>
> ---
>  drivers/char/tpm/tpm-interface.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/drivers/char/tpm/tpm-interface.c b/drivers/char/tpm/tpm-interface.c
> index e32f6e85dc6d..0923e81505a5 100644
> --- a/drivers/char/tpm/tpm-interface.c
> +++ b/drivers/char/tpm/tpm-interface.c
> @@ -423,7 +423,7 @@ static ssize_t tpm_try_transmit(struct tpm_chip *chip,
>  		header->tag = cpu_to_be16(TPM2_ST_NO_SESSIONS);
>  		header->return_code = cpu_to_be32(TPM2_RC_COMMAND_CODE |
>  						  TSS2_RESMGR_TPM_RC_LAYER);
> -		return bufsiz;
> +		return header->length;
>  	}
>  
>  	if (bufsiz > TPM_BUFSIZE)
> -- 
> 2.17.1
> 

Isn't this a regression (just came from one week leave might be
overlooking something)? Should always return either error or response
length. If so, please add the fixes tag.

And please send to linux-integrity and CC to linux-integrity and
linux-kernel.

Thanks anyway.

/Jarkko
diff mbox

Patch

diff --git a/drivers/char/tpm/tpm-interface.c b/drivers/char/tpm/tpm-interface.c
index e32f6e85dc6d..0923e81505a5 100644
--- a/drivers/char/tpm/tpm-interface.c
+++ b/drivers/char/tpm/tpm-interface.c
@@ -423,7 +423,7 @@  static ssize_t tpm_try_transmit(struct tpm_chip *chip,
 		header->tag = cpu_to_be16(TPM2_ST_NO_SESSIONS);
 		header->return_code = cpu_to_be32(TPM2_RC_COMMAND_CODE |
 						  TSS2_RESMGR_TPM_RC_LAYER);
-		return bufsiz;
+		return header->length;
 	}
 
 	if (bufsiz > TPM_BUFSIZE)