On Thu, Feb 16, 2023 at 03:14:02PM -0500, James Bottomley wrote: > Once we have encryption and authentication, marshalling and > unmarshalling sessions becomes hugely complex. Add cursor based > functions which update the current pointer to make response parsing > easier. You need to properly introduce the concept of cursor based function, and how that maps into implementation. I understand absolutely nothing of the change just by reading the commit message, it is pretty much useless peace of text. > > Signed-off-by: James Bottomley <James.Bottomley@xxxxxxxxxxxxxxxxxxxxx> > --- > drivers/char/tpm/tpm-buf.c | 29 +++++++++++++++++++++++++++++ > include/linux/tpm.h | 3 +++ > 2 files changed, 32 insertions(+) > > diff --git a/drivers/char/tpm/tpm-buf.c b/drivers/char/tpm/tpm-buf.c > index 292c6f14f72c..b76158f9bcd0 100644 > --- a/drivers/char/tpm/tpm-buf.c > +++ b/drivers/char/tpm/tpm-buf.c > @@ -7,6 +7,8 @@ > #include <linux/module.h> > #include <linux/tpm.h> > > +#include <asm/unaligned.h> > + > static int __tpm_buf_init(struct tpm_buf *buf) > { > buf->data = (u8 *)__get_free_page(GFP_KERNEL); > @@ -154,3 +156,30 @@ void tpm_buf_append_2b(struct tpm_buf *buf, struct tpm_buf *tpm2b) > tpm_buf_reset_int(tpm2b); > } > EXPORT_SYMBOL_GPL(tpm_buf_append_2b); > + > +/* functions for unmarshalling data and moving the cursor */ > +u8 tpm_get_inc_u8(const u8 **ptr) > +{ > + return *((*ptr)++); > +} > +EXPORT_SYMBOL_GPL(tpm_get_inc_u8); > + > +u16 tpm_get_inc_u16(const u8 **ptr) > +{ > + u16 val; > + > + val = get_unaligned_be16(*ptr); > + *ptr += sizeof(val); > + return val; > +} > +EXPORT_SYMBOL_GPL(tpm_get_inc_u16); > + > +u32 tpm_get_inc_u32(const u8 **ptr) > +{ > + u32 val; > + > + val = get_unaligned_be32(*ptr); > + *ptr += sizeof(val); > + return val; > +} > +EXPORT_SYMBOL_GPL(tpm_get_inc_u32); > diff --git a/include/linux/tpm.h b/include/linux/tpm.h > index f2d4dab6d832..f7cff1d114b0 100644 > --- a/include/linux/tpm.h > +++ b/include/linux/tpm.h > @@ -335,6 +335,9 @@ void tpm_buf_append_u8(struct tpm_buf *buf, const u8 value); > void tpm_buf_append_u16(struct tpm_buf *buf, const u16 value); > void tpm_buf_append_u32(struct tpm_buf *buf, const u32 value); > void tpm_buf_append_2b(struct tpm_buf *buf, struct tpm_buf *tpm2b); > +u8 tpm_get_inc_u8(const u8 **ptr); > +u16 tpm_get_inc_u16(const u8 **ptr); > +u32 tpm_get_inc_u32(const u8 **ptr); > > /* > * Check if TPM device is in the firmware upgrade mode. > -- > 2.35.3 > BR, Jarkko