Commit fd49e032 authored by Matteo Croce's avatar Matteo Croce Committed by Kees Cook
Browse files

pstore: Fix linking when crypto API disabled



When building a kernel with CONFIG_PSTORE=y and CONFIG_CRYPTO not set,
a build error happens:

    ld: fs/pstore/platform.o: in function `pstore_dump':
    platform.c:(.text+0x3f9): undefined reference to `crypto_comp_compress'
    ld: fs/pstore/platform.o: in function `pstore_get_backend_records':
    platform.c:(.text+0x784): undefined reference to `crypto_comp_decompress'

This because some pstore code uses crypto_comp_(de)compress regardless
of the CONFIG_CRYPTO status. Fix it by wrapping the (de)compress usage
by IS_ENABLED(CONFIG_PSTORE_COMPRESS)

Signed-off-by: default avatarMatteo Croce <mcroce@linux.microsoft.com>
Link: https://lore.kernel.org/lkml/20200706234045.9516-1-mcroce@linux.microsoft.com


Fixes: cb3bee03 ("pstore: Use crypto compress API")
Cc: stable@vger.kernel.org
Signed-off-by: default avatarKees Cook <keescook@chromium.org>
parent 48778464
Loading
Loading
Loading
Loading
+4 −1
Original line number Diff line number Diff line
@@ -269,6 +269,9 @@ static int pstore_compress(const void *in, void *out,
{
	int ret;

	if (!IS_ENABLED(CONFIG_PSTORE_COMPRESSION))
		return -EINVAL;

	ret = crypto_comp_compress(tfm, in, inlen, out, &outlen);
	if (ret) {
		pr_err("crypto_comp_compress failed, ret = %d!\n", ret);
@@ -668,7 +671,7 @@ static void decompress_record(struct pstore_record *record)
	int unzipped_len;
	char *unzipped, *workspace;

	if (!record->compressed)
	if (!IS_ENABLED(CONFIG_PSTORE_COMPRESSION) || !record->compressed)
		return;

	/* Only PSTORE_TYPE_DMESG support compression. */