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 <James.Bottomley@xxxxxxxxxxxxxxxxxxxxx> 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