linux-stable/drivers/nvme/host
Arnd Bergmann 0e6c4fe782 nvme: tcp: fix compile-time checks for TLS mode
When CONFIG_NVME_KEYRING is enabled as a loadable module, but the TCP
host code is built-in, it fails to link:

arm-linux-gnueabi-ld: drivers/nvme/host/tcp.o: in function `nvme_tcp_setup_ctrl':
tcp.c:(.text+0x1940): undefined reference to `nvme_tls_psk_default'

The problem is that the compile-time conditionals are inconsistent here,
using a mix of #ifdef CONFIG_NVME_TCP_TLS, IS_ENABLED(CONFIG_NVME_TCP_TLS)
and IS_ENABLED(CONFIG_NVME_KEYRING) checks, with CONFIG_NVME_KEYRING
controlling whether the implementation is actually built.

Change it to use IS_ENABLED(CONFIG_NVME_KEYRING) checks consistently,
which should help readability and make it less error-prone. Combining
it with the check for the ctrl->opts->tls flag lets the compiler drop
all the TLS code in configurations without this feature, which also
helps runtime behavior in addition to avoiding the link failure.

To make it possible for the compiler to build the dead code, both
the tls_handshake_timeout variable and the TLS specific members
of nvme_tcp_queue need to be moved out of the #ifdef block as well,
but at least the former of these gets optimized out again.

Signed-off-by: Arnd Bergmann <arnd@arndb.de>
Link: https://lore.kernel.org/r/20231122224719.4042108-4-arnd@kernel.org
Signed-off-by: Jens Axboe <axboe@kernel.dk>
2023-11-22 18:41:14 -07:00
..
apple.c nvme-apple: return directly instead of else 2023-04-13 08:55:06 +02:00
auth.c nvme-auth: set explanation code for failure2 msgs 2023-11-20 09:25:23 -08:00
constants.c nvme fixes for Linux 6.5 2023-06-30 14:04:08 -06:00
core.c nvme: move nvme_stop_keep_alive() back to original position 2023-11-22 08:07:02 -08:00
fabrics.c nvme: blank out authentication fabrics options if not configured 2023-11-20 09:25:32 -08:00
fabrics.h nvme-fabrics: parse options 'keyring' and 'tls_key' 2023-10-11 10:29:58 -07:00
fault_inject.c nvme: fix parameter check in nvme_fault_inject_init() 2023-07-12 08:48:33 -07:00
fc.c nvme: move nvme_stop_keep_alive() back to original position 2023-11-22 08:07:02 -08:00
fc.h
hwmon.c nvme: host: hwmon: constify pointers to hwmon_channel_info 2023-08-21 12:54:02 -07:00
ioctl.c nvme: fix error-handling for io_uring nvme-passthrough 2023-11-06 08:09:31 -08:00
Kconfig nvme: common: make keyring and auth separate modules 2023-11-07 10:05:15 -08:00
Makefile nvme: rework NVME_AUTH Kconfig selection 2023-10-12 08:04:49 -07:00
multipath.c nvme fixes for Linux 6.5 2023-06-30 14:04:08 -06:00
nvme.h nvme: rework NVME_AUTH Kconfig selection 2023-10-12 08:04:49 -07:00
pci.c for-6.7/block-2023-10-30 2023-11-01 12:30:07 -10:00
pr.c nvme: Add pr_ops read_reservation support 2023-04-11 21:55:36 -04:00
rdma.c nvme: move nvme_stop_keep_alive() back to original position 2023-11-22 08:07:02 -08:00
sysfs.c nvme: rework NVME_AUTH Kconfig selection 2023-10-12 08:04:49 -07:00
tcp.c nvme: tcp: fix compile-time checks for TLS mode 2023-11-22 18:41:14 -07:00
trace.c
trace.h nvme: fix async event trace event 2023-04-13 08:59:04 +02:00
zns.c scsi: nvme: zns: Set zone limits before revalidating zones 2023-07-05 21:58:10 -04:00