Fwd: TPM unaligned memory accesses

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi everyone,

I noticed the following potential unaligned memory access in
tpm-interface.c, and I was wondering how it would be handled on
architectures that don't support unaligned accesses.  Is this TPM code
expected to work on all architectures?

ssize_t tpm_transmit_cmd(...)
{
    const struct tpm_header *header = (struct tpm_header *)buf->data;
    int err;
    ssize_t len;

     len = tpm_transmit(chip, buf->data, PAGE_SIZE);
     if (len <  0)
         return len;

     err = be32_to_cpu(header->return_code);
        ...
}

I'm referring to the line at the bottom, before the ellipsis where we
read 'return_code'.

struct tpm_header has a __be16 tag followed by a __be32 return code.
If we are reading 'return_code', is this an unaligned access?
Similarly this would apply to the 'length' member too?

Documentation/unaligned-memory-access.txt recommends going through the
kernel API get_unaligned() and put_unaligned() in <asm/unaligned.h> to
avoid unaligned accesses, but I don't see this anywhere in the TPM
code.  I'm just trying to wrap my head around this.

Thanks!.
Andrew



[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Linux Kernel]     [Linux Kernel Hardening]     [Linux NFS]     [Linux NILFS]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux SCSI]

  Powered by Linux