• Ard Biesheuvel's avatar
    crypto: arm/chacha - fix build failured when kernel mode NEON is disabled · 0bc81767
    Ard Biesheuvel authored
    When the ARM accelerated ChaCha driver is built as part of a configuration
    that has kernel mode NEON disabled, we expect the compiler to propagate
    the build time constant expression IS_ENABLED(CONFIG_KERNEL_MODE_NEON) in
    a way that eliminates all the cross-object references to the actual NEON
    routines, which allows the chacha-neon-core.o object to be omitted from
    the build entirely.
    
    Unfortunately, this fails to work as expected in some cases, and we may
    end up with a build error such as
    
      chacha-glue.c:(.text+0xc0): undefined reference to `chacha_4block_xor_neon'
    
    caused by the fact that chacha_doneon() has not been eliminated from the
    object code, even though it will never be called in practice.
    
    Let's fix this by adding some IS_ENABLED(CONFIG_KERNEL_MODE_NEON) tests
    that are not strictly needed from a logical point of view, but should
    help the compiler infer that the NEON code paths are unreachable in
    those cases.
    
    Fixes: b36d8c09 ("crypto: arm/chacha - remove dependency on generic ...")
    Reported-by: default avatarRussell King <linux@armlinux.org.uk>
    Cc: Arnd Bergmann <arnd@arndb.de>
    Signed-off-by: default avatarArd Biesheuvel <ardb@kernel.org>
    Signed-off-by: default avatarHerbert Xu <herbert@gondor.apana.org.au>
    0bc81767
chacha-glue.c 9.36 KB