• Dave Gerlach's avatar
    misc: sram-exec: Use aligned fncpy instead of memcpy · 34cfb106
    Dave Gerlach authored
    Currently the sram-exec functionality, which allows allocation of
    executable memory and provides an API to move code to it, is only
    selected in configs for the ARM architecture. Based on commit
    5756e9dd ("ARM: 6640/1: Thumb-2: Symbol manipulation macros for
    function body copying") simply copying a C function pointer address
    using memcpy without consideration of alignment and Thumb is unsafe on
    ARM platforms.
    
    The aforementioned patch introduces the fncpy macro which is a safe way
    to copy executable code on ARM platforms, so let's make use of that here
    rather than the unsafe plain memcpy that was previously used by
    sram_exec_copy. Now sram_exec_copy will move the code to "dst" and
    return an address that is guaranteed to be safely callable.
    
    In the future, architectures hoping to make use of the sram-exec
    functionality must define an fncpy macro just as ARM has done to
    guarantee or check for safe copying to executable memory before allowing
    the arch to select CONFIG_SRAM_EXEC.
    Acked-by: default avatarTony Lindgren <tony@atomide.com>
    Acked-by: default avatarRussell King <rmk+kernel@armlinux.org.uk>
    Reviewed-by: default avatarAlexandre Belloni <alexandre.belloni@free-electrons.com>
    Signed-off-by: default avatarDave Gerlach <d-gerlach@ti.com>
    Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
    34cfb106
sram-exec.c 3.61 KB