58eb5b6707
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: cb3bee0369
("pstore: Use crypto compress API")
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
Signed-off-by: Kees Cook <keescook@chromium.org>
145 lines
4.0 KiB
Plaintext
145 lines
4.0 KiB
Plaintext
config PSTORE
|
|
tristate "Persistent store support"
|
|
select CRYPTO if PSTORE_COMPRESS
|
|
default n
|
|
help
|
|
This option enables generic access to platform level
|
|
persistent storage via "pstore" filesystem that can
|
|
be mounted as /dev/pstore. Only useful if you have
|
|
a platform level driver that registers with pstore to
|
|
provide the data, so you probably should just go say "Y"
|
|
(or "M") to a platform specific persistent store driver
|
|
(e.g. ACPI_APEI on X86) which will select this for you.
|
|
If you don't have a platform persistent store driver,
|
|
say N.
|
|
|
|
config PSTORE_DEFLATE_COMPRESS
|
|
tristate "DEFLATE (ZLIB) compression"
|
|
default y
|
|
depends on PSTORE
|
|
select CRYPTO_DEFLATE
|
|
help
|
|
This option enables DEFLATE (also known as ZLIB) compression
|
|
algorithm support.
|
|
|
|
config PSTORE_LZO_COMPRESS
|
|
tristate "LZO compression"
|
|
depends on PSTORE
|
|
select CRYPTO_LZO
|
|
help
|
|
This option enables LZO compression algorithm support.
|
|
|
|
config PSTORE_LZ4_COMPRESS
|
|
tristate "LZ4 compression"
|
|
depends on PSTORE
|
|
select CRYPTO_LZ4
|
|
help
|
|
This option enables LZ4 compression algorithm support.
|
|
|
|
config PSTORE_LZ4HC_COMPRESS
|
|
tristate "LZ4HC compression"
|
|
depends on PSTORE
|
|
select CRYPTO_LZ4HC
|
|
help
|
|
This option enables LZ4HC (high compression) mode algorithm.
|
|
|
|
config PSTORE_842_COMPRESS
|
|
bool "842 compression"
|
|
depends on PSTORE
|
|
select CRYPTO_842
|
|
help
|
|
This option enables 842 compression algorithm support.
|
|
|
|
config PSTORE_COMPRESS
|
|
def_bool y
|
|
depends on PSTORE
|
|
depends on PSTORE_DEFLATE_COMPRESS || PSTORE_LZO_COMPRESS || \
|
|
PSTORE_LZ4_COMPRESS || PSTORE_LZ4HC_COMPRESS || \
|
|
PSTORE_842_COMPRESS
|
|
|
|
choice
|
|
prompt "Default pstore compression algorithm"
|
|
depends on PSTORE_COMPRESS
|
|
help
|
|
This option chooses the default active compression algorithm.
|
|
This change be changed at boot with "pstore.compress=..." on
|
|
the kernel command line.
|
|
|
|
Currently, pstore has support for 5 compression algorithms:
|
|
deflate, lzo, lz4, lz4hc and 842.
|
|
|
|
The default compression algorithm is deflate.
|
|
|
|
config PSTORE_DEFLATE_COMPRESS_DEFAULT
|
|
bool "deflate" if PSTORE_DEFLATE_COMPRESS
|
|
|
|
config PSTORE_LZO_COMPRESS_DEFAULT
|
|
bool "lzo" if PSTORE_LZO_COMPRESS
|
|
|
|
config PSTORE_LZ4_COMPRESS_DEFAULT
|
|
bool "lz4" if PSTORE_LZ4_COMPRESS
|
|
|
|
config PSTORE_LZ4HC_COMPRESS_DEFAULT
|
|
bool "lz4hc" if PSTORE_LZ4HC_COMPRESS
|
|
|
|
config PSTORE_842_COMPRESS_DEFAULT
|
|
bool "842" if PSTORE_842_COMPRESS
|
|
|
|
endchoice
|
|
|
|
config PSTORE_COMPRESS_DEFAULT
|
|
string
|
|
depends on PSTORE_COMPRESS
|
|
default "deflate" if PSTORE_DEFLATE_COMPRESS_DEFAULT
|
|
default "lzo" if PSTORE_LZO_COMPRESS_DEFAULT
|
|
default "lz4" if PSTORE_LZ4_COMPRESS_DEFAULT
|
|
default "lz4hc" if PSTORE_LZ4HC_COMPRESS_DEFAULT
|
|
default "842" if PSTORE_842_COMPRESS_DEFAULT
|
|
|
|
config PSTORE_CONSOLE
|
|
bool "Log kernel console messages"
|
|
depends on PSTORE
|
|
help
|
|
When the option is enabled, pstore will log all kernel
|
|
messages, even if no oops or panic happened.
|
|
|
|
config PSTORE_PMSG
|
|
bool "Log user space messages"
|
|
depends on PSTORE
|
|
help
|
|
When the option is enabled, pstore will export a character
|
|
interface /dev/pmsg0 to log user space messages. On reboot
|
|
data can be retrieved from /sys/fs/pstore/pmsg-ramoops-[ID].
|
|
|
|
If unsure, say N.
|
|
|
|
config PSTORE_FTRACE
|
|
bool "Persistent function tracer"
|
|
depends on PSTORE
|
|
depends on FUNCTION_TRACER
|
|
depends on DEBUG_FS
|
|
help
|
|
With this option kernel traces function calls into a persistent
|
|
ram buffer that can be decoded and dumped after reboot through
|
|
pstore filesystem. It can be used to determine what function
|
|
was last called before a reset or panic.
|
|
|
|
If unsure, say N.
|
|
|
|
config PSTORE_RAM
|
|
tristate "Log panic/oops to a RAM buffer"
|
|
depends on PSTORE
|
|
depends on HAS_IOMEM
|
|
depends on HAVE_MEMBLOCK
|
|
select REED_SOLOMON
|
|
select REED_SOLOMON_ENC8
|
|
select REED_SOLOMON_DEC8
|
|
help
|
|
This enables panic and oops messages to be logged to a circular
|
|
buffer in RAM where it can be read back at some later point.
|
|
|
|
Note that for historical reasons, the module will be named
|
|
"ramoops.ko".
|
|
|
|
For more information, see Documentation/admin-guide/ramoops.rst.
|