• Sandrine Bailleux's avatar
    Fix incorrect pointer conversion in SMC_UUID_RET() · 43b8fa8e
    Sandrine Bailleux authored
    
    
    Casting a pointer to a struct uuid into a pointer to uint32_t may
    result in a pointer that is not correctly aligned, which constitutes
    an undefined behaviour. In the case of TF, this also generates a data
    abort because alignment fault checking is enabled (through the SCTLR.A
    bit).
    
    This patch modifies the SMC_UUID_RET() macro to read the uuid
    structure without any pointer aliasing. A helper function then
    combines every set of 4 bytes into a 32-bit value suitable to be
    returned through the x0-x3 registers.
    
    This fixes a violation of MISRA rule 11.3.
    
    Change-Id: I53ee73bb4cb332f4d8286055ceceb6f347caa080
    Signed-off-by: default avatarSandrine Bailleux <sandrine.bailleux@arm.com>
    43b8fa8e
smccc_helpers.h 4.74 KB