• Arnd Bergmann's avatar
    pstore: fix crypto dependencies · 58eb5b67
    Arnd Bergmann authored
    The new crypto API use causes some problems with Kconfig dependencies,
    including this link error:
    
    fs/pstore/platform.o: In function `pstore_register':
    platform.c:(.text+0x248): undefined reference to `crypto_has_alg'
    platform.c:(.text+0x2a0): undefined reference to `crypto_alloc_base'
    fs/pstore/platform.o: In function `pstore_unregister':
    platform.c:(.text+0x498): undefined reference to `crypto_destroy_tfm'
    crypto/lz4hc.o: In function `lz4hc_sdecompress':
    lz4hc.c:(.text+0x1a): undefined reference to `LZ4_decompress_safe'
    crypto/lz4hc.o: In function `lz4hc_decompress_crypto':
    lz4hc.c:(.text+0x5a): undefined reference to `LZ4_decompress_safe'
    crypto/lz4hc.o: In function `lz4hc_scompress':
    lz4hc.c:(.text+0xaa): undefined reference to `LZ4_compress_HC'
    crypto/lz4hc.o: In function `lz4hc_mod_init':
    lz4hc.c:(.init.text+0xf): undefined reference to `crypto_register_alg'
    lz4hc.c:(.init.text+0x1f): undefined reference to `crypto_register_scomp'
    lz4hc.c:(.init.text+0x2f): undefined reference to `crypto_unregister_alg'
    
    The problem is that with CONFIG_CRYPTO=m, we must not 'select CRYPTO_LZ4'
    from a bool symbol, or call crypto API functions from a built-in
    module.
    
    This turns the sub-options into 'tristate' ones so the dependencies
    are honored, and makes the pstore itself select the crypto core
    if necessary.
    
    Fixes: cb3bee03 ("pstore: Use crypto compress API")
    Signed-off-by: default avatarArnd Bergmann <arnd@arndb.de>
    Signed-off-by: default avatarKees Cook <keescook@chromium.org>
    58eb5b67
platform.c 17.3 KB