[PATCH v3 07/16] tpm: access command header through struct in tpm_try_transmit()

Jarkko Sakkinen jarkko.sakkinen at linux.intel.com
Tue Nov 6 06:08:39 UTC 2018


On Mon, Nov 05, 2018 at 05:26:30PM -0500, Stefan Berger wrote:
> On 11/4/18 8:45 PM, Jarkko Sakkinen wrote:
> > Instead of accessing fields of the command header through offsets to
> > the raw buffer, it is a better idea to use the header struct pointer
> > that is already used elsewhere in the function.
> > 
> > Signed-off-by: Jarkko Sakkinen <jarkko.sakkinen at linux.intel.com>
> > ---
> >   drivers/char/tpm/tpm-interface.c | 4 ++--
> >   1 file changed, 2 insertions(+), 2 deletions(-)
> > 
> > diff --git a/drivers/char/tpm/tpm-interface.c b/drivers/char/tpm/tpm-interface.c
> > index 0f343407daf8..422e3bb0bd3d 100644
> > --- a/drivers/char/tpm/tpm-interface.c
> > +++ b/drivers/char/tpm/tpm-interface.c
> > @@ -190,8 +190,8 @@ static ssize_t tpm_try_transmit(struct tpm_chip *chip,
> >   	if (bufsiz > TPM_BUFSIZE)
> >   		bufsiz = TPM_BUFSIZE;
> > 
> > -	count = be32_to_cpu(*((__be32 *) (buf + 2)));
> > -	ordinal = be32_to_cpu(*((__be32 *) (buf + 6)));
> > +	count = be32_to_cpu(header->length);
> > +	ordinal = be32_to_cpu(header->return_code);
> 
> Hm. This should use the proper type of header and use in_header->ordinal.

Well, the fuction has output header already declared. What I could do
as a prequel commit is to take these:

struct tpm_input_header {
	__be16	tag;
	__be32	length;
	__be32	ordinal;
} __packed;

struct tpm_output_header {
	__be16	tag;
	__be32	length;
	__be32	return_code;
} __packed;

and replace them with this:

struct tpm_header {
	__be16	tag;
	__be32	length;
	union {
		__be32 ordinal;
		__be32 return_code;
	};
} __packed;

/Jarkko



More information about the Linux-security-module-archive mailing list