On Mon, Sep 09, 2019 at 01:18:35PM +0100, James Bottomley wrote:
> Most complex TPM commands require appending TPM2B buffers to the
> command body. Since TPM2B types are essentially variable size arrays,
> it makes it impossible to represent these complex command arguments as
> structures and we simply have to build them up using append primitives
> like these.
>
> Signed-off-by: James Bottomley <[email protected]>
I think a better idea would be to have headerless TPM buffers and also
it makes sense to have a separate length field in the struct to keep the
code sane given that sometimes the buffer does not store the length.
E.g.
enum tpm_buf_flags {
TPM_BUF_OVERFLOW = BIT(0),
TPM_BUF_HEADERLESS = BIT(1),
};
struct tpm_buf {
unsigned int length;
struct page *data_page;
unsigned int flags;
u8 *data;
};
/Jarkko