]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
crash_dump, nvme: select CONFIGFS_FS as built-in
authorArnd Bergmann <arnd@arndb.de>
Wed, 21 May 2025 16:03:19 +0000 (18:03 +0200)
committerAndrew Morton <akpm@linux-foundation.org>
Wed, 28 May 2025 02:40:33 +0000 (19:40 -0700)
Configfs can be configured as a loadable module, which causes a link-time
failure for dm-crypt crash dump support:

crash_dump_dm_crypt.c:(.text+0x3a4): undefined reference to `config_item_init_type_name'
aarch64-linux-ld: kernel/crash_dump_dm_crypt.o: in function `configfs_dmcrypt_keys_init':
crash_dump_dm_crypt.c:(.init.text+0x90): undefined reference to `config_group_init'
aarch64-linux-ld: crash_dump_dm_crypt.c:(.init.text+0xb4): undefined reference to `configfs_register_subsystem'
aarch64-linux-ld: crash_dump_dm_crypt.c:(.init.text+0xd8): undefined reference to `configfs_unregister_subsystem'

This could be avoided with a dependency on CONFIGFS_FS=y, but the
dependency has an additional problem of causing Kconfig dependency loops
since most other uses select the symbol.

Using a simple 'select CONFIGFS_FS' here in turn fails with
CONFIG_DM_CRYPT=m, because that still only causes configfs to be a
loadable module.

The only version I found that fixes this reliably uses an additional
Kconfig symbol to ensure the 'select' actually turns on configfs as
builtin, with two additional changes to avoid dependency loops with nvme
and sysfs.

There is no compile-time dependency between configfs and sysfs, so
selecting configfs from a driver with sysfs disabled does not cause link
failures, only the default /sys/kernel/config mount point will not be
created.

Link: https://lkml.kernel.org/r/20250521160359.2132363-1-arnd@kernel.org
Fixes: 6b23858fd63b ("crash_dump: make dm crypt keys persist for the kdump kernel")
Fixes: 1fb470408497 ("nvme-loop: add configfs dependency")
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
Cc: Andreas Hindborg <a.hindborg@kernel.org>
Cc: Breno Leitao <leitao@debian.org>
Cc: Chaitanya Kulkarni <kch@nvidia.com>
Cc: Christoph Hellwig <hch@lst.de>
Cc: Coiby Xu <coxu@redhat.com>
Cc: Jens Axboe <axboe@kernel.dk>
Cc: Sagi Grimberg <sagi@grimberg.me>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
drivers/nvme/target/Kconfig
fs/configfs/Kconfig
kernel/Kconfig.kexec

index 4c253b433bf78d06b4aaacc6db8f6cb83d26fdb9..4904097dfd490fa4511676e8f27c8cdada6ae939 100644 (file)
@@ -3,7 +3,7 @@
 config NVME_TARGET
        tristate "NVMe Target support"
        depends on BLOCK
-       depends on CONFIGFS_FS
+       select CONFIGFS_FS
        select NVME_KEYRING if NVME_TARGET_TCP_TLS
        select KEYS if NVME_TARGET_TCP_TLS
        select SGL_ALLOC
index 272b644569995c9f38068429946655945867d52c..1fcd761fe7be74c36a26106bf8953c61ab53e43b 100644 (file)
@@ -1,7 +1,6 @@
 # SPDX-License-Identifier: GPL-2.0-only
 config CONFIGFS_FS
        tristate "Userspace-driven configuration filesystem"
-       select SYSFS
        help
          configfs is a RAM-based filesystem that provides the converse
          of sysfs's functionality. Where sysfs is a filesystem-based
index c3e180d5e4fd774998582edd1cf52108252585f0..ceadf4a6649627c345b9e7a555f7e3fc12715282 100644 (file)
@@ -120,12 +120,18 @@ config CRASH_DM_CRYPT
        depends on KEXEC_FILE
        depends on CRASH_DUMP
        depends on DM_CRYPT
-       depends on CONFIGFS_FS
        help
          With this option enabled, user space can intereact with
          /sys/kernel/config/crash_dm_crypt_keys to make the dm crypt keys
          persistent for the dump-capture kernel.
 
+config CRASH_DM_CRYPT_CONFIGS
+       def_tristate CRASH_DM_CRYPT
+       select CONFIGFS_FS
+       help
+         CRASH_DM_CRYPT cannot directly select CONFIGFS_FS, because that
+         is required to be built-in.
+
 config CRASH_HOTPLUG
        bool "Update the crash elfcorehdr on system configuration changes"
        default y