crash_dump, nvme: select CONFIGFS_FS as built-in

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: 1fb4704084 ("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>
This commit is contained in:
Arnd Bergmann 2025-05-21 18:03:19 +02:00 committed by Andrew Morton
parent c164679bed
commit 4496e1c135
3 changed files with 8 additions and 3 deletions

View File

@ -3,7 +3,7 @@
config NVME_TARGET config NVME_TARGET
tristate "NVMe Target support" tristate "NVMe Target support"
depends on BLOCK depends on BLOCK
depends on CONFIGFS_FS select CONFIGFS_FS
select NVME_KEYRING if NVME_TARGET_TCP_TLS select NVME_KEYRING if NVME_TARGET_TCP_TLS
select KEYS if NVME_TARGET_TCP_TLS select KEYS if NVME_TARGET_TCP_TLS
select SGL_ALLOC select SGL_ALLOC

View File

@ -1,7 +1,6 @@
# SPDX-License-Identifier: GPL-2.0-only # SPDX-License-Identifier: GPL-2.0-only
config CONFIGFS_FS config CONFIGFS_FS
tristate "Userspace-driven configuration filesystem" tristate "Userspace-driven configuration filesystem"
select SYSFS
help help
configfs is a RAM-based filesystem that provides the converse configfs is a RAM-based filesystem that provides the converse
of sysfs's functionality. Where sysfs is a filesystem-based of sysfs's functionality. Where sysfs is a filesystem-based

View File

@ -120,12 +120,18 @@ config CRASH_DM_CRYPT
depends on KEXEC_FILE depends on KEXEC_FILE
depends on CRASH_DUMP depends on CRASH_DUMP
depends on DM_CRYPT depends on DM_CRYPT
depends on CONFIGFS_FS
help help
With this option enabled, user space can intereact with With this option enabled, user space can intereact with
/sys/kernel/config/crash_dm_crypt_keys to make the dm crypt keys /sys/kernel/config/crash_dm_crypt_keys to make the dm crypt keys
persistent for the dump-capture kernel. 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 config CRASH_HOTPLUG
bool "Update the crash elfcorehdr on system configuration changes" bool "Update the crash elfcorehdr on system configuration changes"
default y default y