• Juan Castillo's avatar
    Add NULL pointer check before reading BL32 entry point information · 5ea8aa72
    Juan Castillo authored
    BL2 is responsible for loading BL32 and passing a pointer to the
    BL32 entrypoint info to BL31 in the BL31 parameters. If no BL32
    image is loaded, a NULL pointer is passed. The platform is
    responsible for accessing BL31 parameters and extracting the
    corresponding BL32 EP info.
    
    In ARM platforms, arm_bl31_early_platform_setup() dereferences the
    pointer to the BL32 EP info without checking first if the pointer
    is NULL. This will cause an exception if a BL32 entrypoint has not
    been populated by BL2. FVP and Juno are not affected because they
    always define BL32_BASE, irrespective of whether a BL32 image is
    included in the FIP or not.
    
    This patches fixes the issue by checking the BL32 ep_info pointer
    before trying to access the data.
    
    If `RESET_TO_BL31` is enabled, the BL32 entrypoint is not
    populated if BL32_BASE is not defined.
    
    NOTE: Maintainers of partner platforms should check for this issue
    in their ports.
    
    Fixes ARM-software/tf-issues#320
    
    Change-Id: I31456155503f2765766e8b7cd30ab4a40958fb96
    5ea8aa72
arm_bl31_setup.c 8.94 KB